Перейти к контенту
  • 0

Небольшой фикс для SEO транслитерации


proit

Вопрос

Небольшое отступление.

 

Сегодня был АП у гугля, посему решил узнать, как у меня идет переиндексация форума с учетом нового домена и ЧПУ.

Вебмастер тулз выявил немало ошибок сканирования в графе "Переход не выполнен" с пояснением "Ошибка переадресации".

При проходе по ссылкам, происходило зацикливание 301 редиректов, пока все не заканчивалось на белой странице.

 

Я начал разбираться с этой проблемой, оказалось проблема крылась в отсутствии транслитерации для "Ё", что было быстро исправлено... но все проблемы это не решило. Дальнейший анализ показал, что помимо стандартного набора символов [a-z0-9-], которые должны быть в FURL проходят и посторонние, вроде "длинного тире" и многих других... правда они URL-кодируются, но это у меня тоже вызывало зацикливание:D

 

Названия тем, которые порождали у меня проблему:

 

Зорька – увеличение прибыли с сайта. Офиц. дилер Бегуна

Вёрстка Любой Сложности – Недорого

Тёст №1

Если вы у себя проверите, то в результате получите следующие имена:

 

zorka-%E2%80%93-uvelichenie-pribili-s-saita

v%D1%91rstka-ljuboi-slozhnosti-%E2%80%93-nedorogo

t%D1%91st-%E2%84%961

Что никак не подходит под шаблон [a-z0-9-]. В итоге вот какой фикс у меня получился:

 

В файле /admin/sources/base/core.php ищем static public function makeSeoTransliterate( $text ) и приводим к виду:

 

static public function makeSeoTransliterate( $text )
{
	if ( IPB_USE_SEO_TRANSLIT )
	{
		$text = urldecode($text);

		$text = str_replace( array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','d','e','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

		/* Fix */
		$text = preg_replace( array('#[^a-z0-9-]#', '#-{2,}#'), array('', '-'), $text );			
		$text = trim($text, '-');
		/* /Fix */

		$text = urlencode($text);
	}

	return $text;

}

 

Т.к. SEO имена кэшируются в БД - ниже приведены 2 запроса, которые очищают проблемные имена для последующего перекэширования:

 

UPDATE ibf_topics 
SET title_seo=''
WHERE title_seo LIKE "%\%%"

UPDATE ibf_forums 
SET name_seo=''
WHERE name_seo LIKE "%\%%"

 

P.S. Возможно, этот фикс пригодиться кому-нибудь, а кого и выручит. Правда, я не разобрался, почему у меня на локалке (под виндой) не вызывает таких категоричных проблем. Возможно, что многие спокойно себе работают и с подобными неЧПУ-урлами, но все же рекомендую провериться по указанным названиям тем.

Я был бы очень рад, если бы с вашей помощью удалось донести до разработчиков сей момент, что бы те в следующих релизах подкорректировали транслитерацию СЕО имен и не приходилось бы переносить данный фикс.

 

P.S.S. Недавно закончил экспорт тем для сайта с форума, находящегося на другом серваке. Если будет востребовано, то могу создать тему с сабжем.

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Для похожих целей давно пользуюсь самописной функцией:

function ru2en($txt){
$ru = explode(" ","е ё ж ч ш ю я а б в г д з и й к л м н о п р с т у ф х ц щ ы э");
$en = explode(" ","je jo zh ch sh ju ja a b v g d z i j k l m n o p r s t u f h c w y e");
for($i=0;$i<count($en);$i++)$txt = str_replace($ru[$i],$en[$i],$txt);
$txt = str_replace(" / ","_i_",$txt);
$txt = str_replace(" ","-",$txt);
$txt = preg_replace( "/[^a-zA-Z0-9-_]/", "", $txt );

return $txt;
}

Проблем с транслитерацией ни разу не возникало.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Да, это тоже будет работать:D

Вот только зачем изобретать новый вело, если уже есть новенький-красенький, правда с подспущенными колесами? Не проще ли их просто подкачать? Насос ведь есть...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А вы в курсе, что перестроение SEO-имен даст 404 по старым адресам, а не заявленный 301-редирект?

 

Почему же, если включить для обработки неверных URL - "перенаправление на правильный URL («301»)", то все старые урлы должным образом будут перенаправлены через 301-редирект на новый.

По крайней мере мной никаких 404 ошибок для старых УРЛов выявлено не было:D

 

Ritsuka, хочу уточнить, вид урла остается тем же: ID-titleSeo, идентификация происходит по ID, поэтому неважно что в titleSEO - все будет перенаправлено на правильный адрес ID-titleSeo

Может быть, я что то не понимаю? Пожалуйста, поясните ваш ответ.

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0
proit, я тоже был в этом уверен, пока не попробовал) На моем русском форуме 3.0.3 при включенной опции "301-переадресации" по устаревшим ЧПУ-ссылкам всегда вылезает главная страница.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Чтобы не быть голословным, предлагаю проблемный урл: http://3wforums.ru/topic/4855-nemogu-ustan...hёtchik/. С моим фиксом он как и положено перенаправляет 301-редиректом на http://3wforums.ru/topic/4855-nemogu-ustanovit-schetchik/:D

 

На моем русском форуме 3.0.3 при включенной опции "301-переадресации" по устаревшим ЧПУ-ссылкам всегда вылезает главная страница.

Ritsuka, очевидно, у вас какая-то проблема с обработкой... Попробуйте разобраться с этим - возьмите любой существующий пост и к id добавьте любой текст (http://site.ru/topic/45645-sdfkjsdfkljsdf) и если не перенаправит на правильный урл, то очевидно наличие проблемы, которую НЕОБХОДИМО решить;)

 

P.S. Я вас не учу, а только хочу помочь.

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

proit, благодарю, ваше решение помогло!

 

На моем русском форуме 3.0.3 при включенной опции "301-переадресации" по устаревшим ЧПУ-ссылкам всегда вылезает главная страница.

 

Ritsuka, у вас что-то не то, всё работает

Изменено пользователем dengol
Ссылка на комментарий
Поделиться на других сайтах

  • 0
видел вроде такую настройку, которая заставляет придираться не только к ид, но и к названиям тем

Т.е. установка допустимых символов в названии темы? Может быть, однако, это не решит всей проблемы, только кастрирует пользователей:D

Мы плавно уходим от темы;) Не ужели никто не видит или не осознает этого бага, а я лишь впустую потратил свое время?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

У меня в настройках:

define( 'IPB_USE_SEO_TRANSLIT', FALSE );
define( 'IPB_USE_ONLY_ID_FURL', TRUE );

 

Адрес типа:

/forum/2/

работает, все остальные ведут на главную:

/forum/2
/forum/2-Старое-название
/forum/2-Старое-название/
/forum/2-Фейковый-текст

 

Т.к. я заметил это только через неделю после перенастройки с транслита на "только цифры", уже поздно метаться, в поисковиках забанен.

 

proit, мой баг масштабнее вашего будет, и все равно nobody cares, потому что и без того багов немеряно...

Изменено пользователем Ritsuka
Ссылка на комментарий
Поделиться на других сайтах

  • 0
мой баг масштабнее вашего будет, и все равно nobody cares, потому что и без того багов немеряно...

Ritsuka, я проверил у себя - реакция почти адекватная (кроме /forum/2), но моя проблема тоже не у всех проявляется в полной мере, поэтому, имеет смысл донести до народа, чтобы знали с чем могут столкнуться...а там и решение общими усилиями будет найдено, если разработчики не подоспеют:D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

proit. а какие у вас настройки в initdata.php ?

Здесь:

/**

* Making FURL Transliteration for russian forums

* @since 3.0.0.ru

*/

define( 'IPB_USE_SEO_TRANSLIT', FALSE );

 

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

Ссылка на комментарий
Поделиться на других сайтах

  • 0

вернул настройки к первоначальным, но если до этого ссылка выглядела вот так:

http://forum.ru/topic/1010-автоэкзотика-в-ярославле/

то сейчас выглядит вот так:

http://forum.ru/topic/1010-avtoakzotika-2009-v-jaroslavle/

 

очистка кеша чпу, перестройка кеша не помогла.

По какой причине ссылки не вернулись к исходному виду?

 

в initdata.php сейчас так:

define( 'IPB_USE_SEO_TRANSLIT', FALSE );

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

 

в core.php так:

	static public function makeSeoTransliterate( $text )
{
	if ( IPB_USE_SEO_TRANSLIT )
	{
		$text = urldecode($text);

		$text = str_replace( array('а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','d','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

		$text = urlencode($text);
	}

	return $text;

}

 

в настройках так:

post-82135-1254338984_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Мои настройки:

 

/**

* Making FURL Transliteration for russian forums

* @since 3.0.0.ru

*/

define( 'IPB_USE_SEO_TRANSLIT', TRUE );

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

 

Если хотите вернуться к "первобытным" урлам:

 

1) В конфиге закомментировать $INFO['use_friendly_urls'] = '1';

2) В БД почистить SEO имена:

 

UPDATE ibf_topics 
SET title_seo='';
UPDATE ibf_forums 
SET name_seo='';

3) Ну и в инитдата, как вы уже написали:

 

define( 'IPB_USE_SEO_TRANSLIT', FALSE );

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

 

Ну а если вы хотите иметь красивые и правильные ЧПУ, то тогда сюда:D

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Мои настройки:

 

/**

* Making FURL Transliteration for russian forums

* @since 3.0.0.ru

*/

define( 'IPB_USE_SEO_TRANSLIT', TRUE );

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

 

Если хотите вернуться к "первобытным" урлам:

 

1) В конфиге закомментировать $INFO['use_friendly_urls'] = '1';

2) В БД почистить SEO имена:

 

UPDATE ibf_topics 
SET title_seo='';
UPDATE ibf_forums 
SET name_seo='';

 

 

Сделала все так и теперь у меня только главная форума открывается все остальное

 

Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

 

Только несколько тем стало такого вида /topic/1632-e-e/page__p__6998#entry6998 а были /topic/1632-самые красивые-бла-бла-бла/page__p__6998#entry6998

а многие так стали index.php?showtopic=1616&view=findpost&p=6992 вот они и не открываются, что делать???

Изменено пользователем Evrika
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Если ваша цель это красивые и правильные урлы, то:

 

1) Сбросить весь кэш, выполнив запрос:

 

UPDATE ibf_topics

SET title_seo='';

UPDATE ibf_forums

SET name_seo='';

 

2) Прописать в конфиге $INFO['use_friendly_urls'] = '1';

3) В инит.дата

 

/**

* Making FURL Transliteration for russian forums

* @since 3.0.0.ru

*/

define( 'IPB_USE_SEO_TRANSLIT', TRUE );

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

Надеюсь, это поможет :D

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Разобралась, вернула

static public function makeSeoTransliterate( $text )
{
	if ( IPB_USE_SEO_TRANSLIT )
	{
		$text = urldecode($text);

		$text = str_replace( array('Р°','Р±','РІ','Рі','Рґ','Рµ','Р¶','Р·','Рё','Р№','Рє','Р»','Рј','РЅ','Рѕ','Рї','СЂ','СЃ','С‚','Сѓ','С„','С…','С†','С‡','С?','С‰','СЌ','СЋ','СЏ','С‹','СЊ','СЉ'), array('a','b','v','g','d','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

		$text = urlencode($text);
	}

	return $text;

}

 

Заработало, но только почему то показывает и id и транслит темы

так:

/topic/1608-banner

 

Как сделать чтоб было /topic/banner ?

 

и ещё вопрос, подскажите как убрать _http://мой-сайт.ru/index ? в настройках так как на скриншоте пользователя dengol написавший Сообщение #14. Я хочу чтоб было просто _http://мой-сайт.ru/

 

Заранее спасибо

 

 

 

 

 

Если ваша цель это красивые и правильные урлы, то:

 

1) Сбросить весь кэш, выполнив запрос:

 

UPDATE ibf_topics

SET title_seo='';

UPDATE ibf_forums

SET name_seo='';

 

2) Прописать в конфиге $INFO['use_friendly_urls'] = '1';

3) В инит.дата

 

/**

* Making FURL Transliteration for russian forums

* @since 3.0.0.ru

*/

define( 'IPB_USE_SEO_TRANSLIT', TRUE );

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

Надеюсь, это поможет :D

 

Так и делала)) Я просто ещё стандартное заменила на ваше вот это чудо.

 

static public function makeSeoTransliterate( $text )
{
	if ( IPB_USE_SEO_TRANSLIT )
	{
		$text = urldecode($text);

		$text = str_replace( array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','d','e','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

		/* Fix */
		$text = preg_replace( array('#[^a-z0-9-]#', '#-{2,}#'), array('', '-'), $text );			
		$text = trim($text, '-');
		/* /Fix */

		$text = urlencode($text);
	}

	return $text;

}

 

Удалила это т.е. вернула стандартное, и все пришло в норму.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ребят, я всё делаю как в первом посте, но у меня начинает лететь форум, просто перестаёт работать!

Что делать?

 

Вот такие у меня ссылки:

http://tektovteme.ru/forum/index.php/topic...entry9296

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Evrika, странно, но можете попробовать как в рекомендации для selly.

 

selly, сначала сделать так

Потом это

Далее заходим в ЦУ -> настройки -> Настройки серверного окружения -> Дружественные URL (ЧПУ) и выбрать по порядку: ДА - ДА - ПУТЬ - ДА

Создать .htaccess в корневом каталоге с содержимым:

 

<IfModule mod_rewrite.c>

Options -MultiViews

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !\..+$

RewriteRule . /index.php [L]

</IfModule>

У меня так работает.

 

P.S. В 3.0.4 эту багу так и не пофиксили:D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
proit, вместо ручного сброса полей seo_titles начиная с 3.0.2 в админке появилась автоматическая кнопка. Находится на странице "Модули", сверху над списком - "Сбросить кэш ЧПУ".
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Evrika, странно, но можете попробовать как в рекомендации для selly.

 

selly, сначала сделать так

Потом это

Далее заходим в ЦУ -> настройки -> Настройки серверного окружения -> Дружественные URL (ЧПУ) и выбрать по порядку: ДА - ДА - ПУТЬ - ДА

Создать .htaccess в корневом каталоге с содержимым:

 

<IfModule mod_rewrite.c>

Options -MultiViews

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !\..+$

RewriteRule . /index.php [L]

</IfModule>

У меня так работает.

 

P.S. В 3.0.4 эту багу так и не пофиксили;)

 

Я дико извиняюсь за назойливость, но я обычный юзер и не совсем понимаю, что да как )

Ты можешь мне подробно объяснить куда заходить, где находится конфинг и т.д... :)

Заранее, большое спасибоо :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Порядок действий:

 

0) Рекомендую закруть форум. ЦУ -> Настройки -> Отключение форума

 

1) Сбросить весь кэш. ЦУ -> Модули -> Сбросить кэш ЧПУ

 

2) В /conf_global.php должна быть строка INFO['use_friendly_urls'] = '1';

 

3) Заходим в ЦУ -> настройки -> Настройки серверного окружения -> Дружественные URL (ЧПУ) и выбрать по порядку: ДА - ДА - ПУТЬ - ДА

 

4) Создать .htaccess в корневом каталоге с содержимым:

 

<IfModule mod_rewrite.c>

Options -MultiViews

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !\..+$

RewriteRule . /index.php [L]

</IfModule>

5) В /initdata.php

 

/**

* Making FURL Transliteration for russian forums

* @since 3.0.0.ru

*/

define( 'IPB_USE_SEO_TRANSLIT', TRUE );

define( 'IPB_USE_ONLY_ID_FURL', FALSE );

6) В файле /admin/sources/base/core.php ищем static public function makeSeoTransliterate( $text ) и приводим к виду:

 

static public function makeSeoTransliterate( $text )

{

if ( IPB_USE_SEO_TRANSLIT )

{

$text = urldecode($text);

 

$text = str_replace( array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','d','e','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

 

/* Fix */

$text = preg_replace( array('#[^a-z0-9-]#', '#-{2,}#'), array('', '-'), $text );

$text = trim($text, '-');

/* /Fix */

 

$text = urlencode($text);

}

 

return $text;

 

}

Вам остается только проглотить:D

Изменено пользователем proit
  • Лайк 1
Ссылка на комментарий
Поделиться на других сайтах

  • 0

У меня проблема вылезла опять((( Буква ё не переводится в транслит.

 

 

вот так страница висит пару минут.

/topic/1467-zatemnenie-sch%D1%91tchikov/

 

потом она перекидывается так.

 

/topic/1467-zatemnenie-schёtchikov/

чувствую буква ё мне гемор создала.

 

часть кода с core.php

 

/**
 * Encode for saving data into the DB that will be exported to XML
 *
 * Mostly used to ensure that data designed for UTF-8 XML files is actually stored as UTF-8 from
 * 'flat' files that may not be saved as UTF-8.
 * Most likely this will have to be expanded to include different char sets eventually.
 *
 * @access	public
 * @param	string		Data in
 * @return	string		Data out
 */
static public function encodeForXml( $string )
{
	if ( strtolower( IPS_DOC_CHAR_SET ) == 'utf-8' )
	{
		$string = utf8_encode( $string );
	}

	return $string;
}

/**
 * Convert russian mounth names to english
 *
 * @access	public
 * @param	string		Date
 * @return	string		Converted date
 */
static public function monthNameRu2En( $text )
{

		return str_replace( array('Январь','Февраль','Март','Апрель','Май','Р˜СЋРЅСЊ,','Р˜СЋР»СЊ','РђРІРіСѓСЃС‚','Сентябрь','Октябрь','РќРѕСЏР±СЂСЊ','Декабрь'), array('January','February','March','April','May','June','July','August','September','October','November','December'), $text );
}

/**
 * SEO Clean up
 *
 * @access	public
 * @param	string		Raw SEO title or text
 * @return	string		Cleaned up SEO title
 */
static public function seoClean( $text )
{
	$text = str_replace( " ", "-", $text );
	/* Ensure we don't have /_/ anywhere in the URL */
	$text = str_replace( "_", "-", $text );

	$text = utf8_encode( $text );

	return $text;
}

static public function makeSeoTransliterate( $text )
{
	if ( IPB_USE_SEO_TRANSLIT )
	{
		$text = urldecode($text);

		$text = str_replace( array('Р°','Р±','РІ','Рі','Рґ','Рµ','Р¶','Р·','Рё','Р№','Рє','Р»','Рј','РЅ','Рѕ','Рї','СЂ','СЃ','С‚','Сѓ','С„','С…','С†','С‡','С€','С‰','СЌ','СЋ','СЏ','С‹','СЊ','СЉ'), array('a','b','v','g','d','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

		$text = urlencode($text);
	}

	return $text;

}
/**
 * Make an SEO title for use in the URL
 *
 * @access	public
 * @param	string		Raw SEO title or text
 * @return	string		Cleaned up SEO title
 */
static public function makeSeoTitle( $text )
{
	if ( ! $text )
	{
		return '';
	}

	/**
	 * SEO titles off?
	 */
	if ( ! ipsRegistry::$settings['use_friendly_urls'] )
	{
		/* We must still build them as things go bad when you toggle FURLs off for a few days */
		//return $text;
	}

	$_test = mb_strtolower( str_replace( array( '`', ' ', '+', '.', '?', '_' ), '-', $text ) );

	/* Doesn't need converting? */
	if ( preg_match( "#^[a-z0-9\-]+$#", $_test ) )
	{
		$_test = preg_replace( "#-{2,}#", '-', $_test );
		$_test = trim( $_test, '-' );
		return $_test;
	}

	/* Strip all HTML tags first */
	$text = strip_tags($text);

	/* Preserve %data */
	$text = preg_replace('#%([a-fA-F0-9][a-fA-F0-9])#', '-xx-$1-xx-', $text);
	$text = str_replace( array( '%', '`' ), '', $text);
	$text = preg_replace('#-xx-([a-fA-F0-9][a-fA-F0-9])-xx-#', '%$1', $text);

	/* Convert accented chars */
	$text = self::convertAccents($text);

	/* Convert it */
	if ( self::isUTF8( $text )  )
	{
		if ( function_exists('mb_strtolower') )
		{
			$text = mb_strtolower($text, 'UTF-8');
		}

		$text = self::utf8Encode( $text, 250 );
	}

	/* Finish off */
	$text = mb_strtolower($text);

	if ( strtolower( IPS_DOC_CHAR_SET ) == 'utf-8' )
	{
		$text = preg_replace( '#&.+?;#'		, '', $text );
		$text = preg_replace( '#[^%a-z0-9 _-]#', '', $text );
	}
	else
	{
		/* Remove x; and xx; but keep xxx; */
		$text = preg_replace( '/(\d){2,3};/', '', $text );
		$text = preg_replace( '#[^%&\#;a-z0-9 _-]#', '', $text );
		$text = str_replace( array( '"', '&'), '', $text );
	}

	$text = str_replace( array( '`', ' ', '+', '.', '?', '_' ), '-', $text );
	$text = preg_replace( "#-{2,}#", '-', $text );
	$text = trim($text, '-');

	$text = self::makeSeoTransliterate( $text );

	IPSDebug::addMessage( "<span style='color:red'>makeSeoTitle ($text) called</span>" );

	return ( $text ) ? $text : '-';
}

/**
 * Seems like UTF-8?
 * hmdker at gmail dot com {@link php.net/utf8_encode}
 *
 * @access	public
 * @param	string		Raw text
 * @return	boolean
 */

 

Я вот это: (как Пишется в предыдущем сообщении.)

 

static public function makeSeoTransliterate( $text )
{
	if ( IPB_USE_SEO_TRANSLIT )
	{
		$text = urldecode($text);

		$text = str_replace( array('Р°','Р±','РІ','Рі','Рґ','Рµ','Р¶','Р·','Рё','Р№','Рє','Р»','Рј','РЅ','Рѕ','Рї','СЂ','СЃ','С‚','Сѓ','С„','С…','С†','С‡','С€','С‰','СЌ','СЋ','СЏ','С‹','СЊ','СЉ'), array('a','b','v','g','d','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

		$text = urlencode($text);
	}

	return $text;

}

 

заменяю на это:

 

static public function makeSeoTransliterate( $text )
{
if ( IPB_USE_SEO_TRANSLIT )
{
$text = urldecode($text);

$text = str_replace( array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','d','e','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

/* Fix */
$text = preg_replace( array('#[^a-z0-9-]#', '#-{2,}#'), array('', '-'), $text );
$text = trim($text, '-');
/* /Fix */

$text = urlencode($text);
}

return $text;

}

 

И у меня исчезает чудесным образом и админка и сам форум, т.е. любимая белая страница.

Изменено пользователем Evrika
Ссылка на комментарий
Поделиться на других сайтах

  • 0
$text = str_replace( array('Р°','Р±','РІ','Рі','Рґ','Рµ','Р¶','Р·','Рё','Р№','Рє','Р»','Рј','РЅ','Рѕ','Рї','СЂ','СЃ','С‚','Сѓ','С„','С…','С†','С‡','С€','С‰','СЌ','СЋ','СЏ','С‹','СЊ','СЉ'), array('a','b','v','g','d','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

 

('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','d','e','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);

 

2Evrika, судя по вашему копипасту, у меня складывается впечатление, что что-то недоброе произошло с кодировкой при копировании. Рекомендую использовать notepad++ в таких случаях, он отлично справляется с конвертацией кодировок в реалтайме.

Изменено пользователем proit
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.