Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Настройка переадресации rewrite на 3.2

Опубликовано:

Здравствуйте уважаемые!

Необходимо сделать переадресацию с использованием RewriteRule. Сейчас ссылка имеет вид http://site.ru/topic/123-text/ а ранее был мод ЧПУ и ссылка была http://site.ru/topic123.html Нужно чтобы при запросе старого адреса http://site.ru/topic123.html переадресовывало на новый http://site.ru/topic/123-text/. Я делал так, в файле .htaccess прописываю RewriteRule ^topic([0-9]+)\.html$ index.php?/topic/$1(-.*)&%{QUERY_STRING} Но такая конструкция выдает ошибку, помогите, пожалуйста, ее исправить.

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

Опубликовано:

Такой редирект через htaccess не сделать, потому что какой там text неизвестен. В этом случае только через php, получить "text" и перенаправить на правильный урл. Можно в htaccess'е отловить старые ссылки и направить на свой файл обработчик.

Опубликовано:
  • Автор

Я пробовал сделать ссылку http://site.ru/topic/123/ вместо http://site.ru/topic/123-text/ но у меня почему-то ссылка становится вида http://site.ru/topic/123-123 а не http://site.ru/topic/123. Подскажите как убрать второй id.

И можно будет реализовать редирект с http://site.ru/topic123.html на http://site.ru/topic/123/ Будет этот код работать:

RewriteRule ^topic([0-9]+)\.html$ index.php?/topic/$1%{QUERY_STRING} 

 

И еще может не по теме, но посоветуйте пожалуйста, как убрать этот index.php?. Дело в том, что у меня в .htaccess прописана переадресация RewriteRule ^topic,,,,,,,{QUERY_STRING} и теперь если я включаю "Использовать .htaccess mod_rewrite" и копирую код

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /site.ru/index.php [L]
</IfModule>

То выдается ошибка - нет такой папки site.ru/forum/2-forum/

Вот код моего .htaccess со вставкой mod_rewrite

RewriteEngine On
RewriteRule ^index.htm index.php?%{QUERY_STRING}
RewriteRule ^index.html index.php?%{QUERY_STRING}
RewriteRule ^main.html index.php?act=idx&%{QUERY_STRING}
RewriteRule ^ipb.html index.php?%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html&st=([0-9]+)$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING}
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING}
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING}
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING}

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /a2/index.php [L]
</IfModule>

Видимо они как то конфликтуют друг с другом. Подскажите, что здесь не так.

Опубликовано:

Будет этот код работать:

Не будет. Этот код немного для другого. Для редиректа будет так

 

RewriteRule ^topic([0-9]+)\.html$ /topic/$1/ [R=301,L]

И добавлять надо после Rrewriteengine On

 

Дело в том, что у меня в .htaccess прописана переадресация RewriteRule ^topic,,,,,,,{QUERY_STRING}

Не надо там никакой переадресации, в тройке уже другая система ЧПУ. Откуда это вы там нашли я не знаю. Оставьте только только реврайты форума, левые удалите.

 

И еще может не по теме, но посоветуйте пожалуйста, как убрать этот index.php?

Включите мод_реврайт.

Опубликовано:
  • Автор
Не надо там никакой переадресации, в тройке уже другая система ЧПУ. Откуда это вы там нашли я не знаю. Оставьте только только реврайты форума, левые удалите.

Если я удаляю из .htaccess код

RewriteEngine On
RewriteRule ^index.htm index.php?%{QUERY_STRING}
RewriteRule ^index.html index.php?%{QUERY_STRING}
RewriteRule ^main.html index.php?act=idx&%{QUERY_STRING}
RewriteRule ^ipb.html index.php?%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html$ index.php?showtopic=$1&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)s([0-9]+)\.html$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^topic([0-9]+)\.html&st=([0-9]+)$ index.php?showtopic=$1&st=$2&%{QUERY_STRING}
RewriteRule ^forum([0-9]+)\.html$ index.php?showforum=$1&%{QUERY_STRING}
RewriteRule ^cat([0-9]+)\.html$ index.php?act=SC&c=$1&%{QUERY_STRING}
RewriteRule ^ptopic([0-9]+)\.html$ index.php?act=Print&client=printer&f=1&t=$1&%{QUERY_STRING}
RewriteRule ^user([0-9]+)\.html$ index.php?showuser=$1&%{QUERY_STRING}

и включаю мод_реврайт, то у меня ссылки которые были ранее (site.ru/topic123.html) не работают, т.е. пишет что нет такой страницы. а мне очень нужно чтобы старые ссылки работали, т.к. они могут находиться у кого-то в закладках или ссылки из поисковой системы на проиндексированные страницы уже не будут работать. А если я оставляю этот код то старые ссылки переадресовываются на новый адрес и страница открывается, но мод_реврайт не работает. Как их соединить вместе, чтобы они не конфликтовали? Посоветуйте, пожалуйста, очень нужно.

Опубликовано:

Без включения мод_реврайта работать не будет. То что у вас, если решили сменить тип ссылок, по хорошему надо убрать и сделать редирект на новые. Пример я вам показывал выше.

 

А ваши реврайты из старой двойке, и судя по всему вы обновили двиг а как сохранить старые ссылки не знаете. Теперь у чпу есть свой шаблон который редактируется в файлах модулях. И это все обсуждалось здесь http://ipbskins.ru/forum/topic5970.html

 

Не смысла держать два вида ссылок, либо оставляете старый формат, либо пишите редиректы на новые ссылки. Т.е. c урл /topic1.html пользователя переадресует на /topic/1/

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.