Перейти к контенту
  • 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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