Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Vlad78

Настройка переадресации 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 пользователей

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

×
×
  • Создать...