Перейти к содержимому
Русский язык для Invision Community 5

Как изменить чпу в IPB 4?

Здравствуйте. Обновил форум с 3.4.8 до 4.1.3.2

В админке - Расширенные настройки - ЧПУ изменил вид:

/forum/id-?? на /forum/id

/topic/id-?? на /topic/id

т.е. открыл ссылки для редактирования и в forum/{#id}-{?} и topic/{#id}-{?} удалил -{?}

 

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

/forum/100/

/topic/100/

 

но есть проблема, которую я не могу решить, так как нет ее ссылки в Расширенные настройки - ЧПУ

это ссылки на другие сообщения форума, которые пользователи оставляли в своих сообщениях. К примеру у меня в одном из сообщений есть ссылка на другое сообщение вида: /forum/topic/1034/?p=46651 при клике на который она переходит по ссылке и преобразуется в /forum/topic/1034/?comment=46651 . Таким образом я попадаю на первую страницу темы, а не на нужное сообщение (т.е. ссылка срабатывает до ?comment=46651).

/forum/topic/1034/?comment=46651 - ссылка получается такой

/forum/topic/1034/#comment-46651 - но должна быть такой

как сделать, чтобы ?comment= преобразовывалось в #comment-

 

в Расширенные настройки - ЧПУ в самом верху есть Создать. Там наверное можно создать нужную мне ссылку, но я не знаю как.

Помогите кто знает.

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

  • Автор

Правильно переходит. Pid этого сообщения из другой темы, поэтому редирект происходит на новую тему.

При клике на эту ссылку forum/index.php?/topic/5118/page__pid__98945__st__60#entry98945 (правильно) переходит на первую страницу нужной темы, но через секунду происходит редирект и открывается страница на которой находилась сама ссылка. URL становиться такой: forum/topic/5890/#entry98945 и переход происходит на сообщение, которое нахожиться на 2 сообщения выше того сообщения в котором находится ссылка (по которой мы кликали).

так и в старой версии 3.4.8 также и в новой версии 4.1

так и в старой версии 3.4.8 также и в новой версии 4.1

http://313news.net/forum2/index.php?/topic/5118/page__pid__98945__st__60#entry98945

 

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

  • 4 года спустя...

Тоже столкнулся с чпу...

в админке перешел на вид тем и топиков вот такой, как был раньше, до обновления:

forum/{#id}

topic/{#id}

ссылки с других сайтов работают.

но!

если в теме всего одна страница, то переход на последнее сообщение вида

/forum/topic/19413/?tab=comments#comment-214116 загружется нормально

а если несколько будет страниц, то получится ссылка с /page/xxx/ и уже будет too many redirects

/forum/topic/5413/page/2/?tab=comments#comment-214094

 

три дня уже бьюсь, на переходить на обычный вид ссылок и терять все старые ссылки очень не хочется.

Прошу помощи или подсказки)

system/Http/Url/Friendly.php

				$def = static::getFurlDefinitionFromPath( $this->getFriendlyComponent() );

заменить на 

				$def = static::getFurlDefinitionFromPath( preg_replace( "/\/" . preg_quote( $param, '/' ) . "\/\d+?/", '', $this->getFriendlyComponent() ) );

 

Супер! Спасибо! Чем обязан?) Я столько мучился...

22 часа назад, Icechieff сказал:

три дня уже бьюсь, на переходить на обычный вид ссылок и терять все старые ссылки очень не хочется.

Как вариант - на старые ссылки можно поставить редирект и ничего не потеряете.

в .htaccess?

сейчас вот заметил, что кто-то стучался в /forum/topic/5498/page-1 и получил отлуп

а вот если б вместо - был / сработало бы ... /forum/topic/5498/page/1 пытался сделать через

RewriteRule (.*)/page/([0-9]+)$ $1page/$2 [QSA]

что-то не работает, ищу еще варианты

Изменено пользователем Icechieff

Еще актуально, перепробовал кучу вариантов, без толку...

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

RewriteRule ^(.*)/page-([0-9]+)$ /$1/page/$2 [R=301,L]

Добавить после RewriteEngine

Эффект есть) page-3 в page/3 переделывает)

но ссылка из нужной  /forum/topic/5498/page/1

превращается в /topic/5498/page/1

 

p.s. методом тыка пробовал

RewriteRule ^(.*)/(.*)/page-([0-9]+)$ /$1/page/$2 [R=301,L]
RewriteRule ^(.*)/page-([0-9]+)$ /$1/forum/page/$2 [R=301,L]

не прокатило

Изменено пользователем Icechieff

может так?

RewriteRule ^(.*)/page-([0-9]+)$ /forum/$1/page/$2 [R=301,L]

Попробуйте так. Ну вообще пример который я привел должен быть рабочим если его поместить в той же папке где находится форум

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.