301 редирект и циклическая адресация — как решить проблему?
Дело обстоит так.
На сайте все страницы подключаются в index.php
параметры передаются через GET. То есть www.site.ru/index.php?page=news .
Задача была сделать ЧПУ типа www.site.ru/news/
Это я сделал добавлением в .htaccess строки: RewriteRule ^(record|feedback|personal|licenses|work)/?$ index.php?page=$1 [L,NC]
Но теперь еще нужно сделать 301 редирект со старых адресов на новые. То есть если я напишу в адресной строке www.site.ru/index.php?page=news то он перенаправлял на www.site.ru/news/
НО
Так как www.site.ru/index.php?page=news и www.site.ru/news/ это одна и та же страница, то выходит, что страница будет перенаправляться сама на себя.
Что нужно сделать чтобы при запросе www.site.ru/index.php?page=news он переходил на www.site.ru/news/
Как это можно организовать? Ну голова кипит.
Нигде ответа на вопрос не нашел, и надеюсь на адекватное и умное сообщество Хабра.
Исключите символом ! страницы при которых редирект не будет работать, в данном примере я исключил файл index.php если вам требуется более сложная конструкция урла, то RewriteCond %{REQUEST_URI} !УРЛ_ПРИ_КОТОРОМ_РЕДИРЕКТ_ЗАПРЕЩЕН
На старые адреса ставите обычный редирект, грубо говоря, если польхователь откроет /index.php?page=news то его перебросит (со сменой адреса в адресной строке) на /news
Запросы вида /news обрабатываете через точку входа (index.php), без редиректа.
В каком месте тут может возникнуть циклическая переадресация-то?
ссылки index.php?page=news и /news подключают один и тот же файл. То есть меняется только отображение ссылки. вот мне и надо чтобы при любом из этих двух запросов отображалось /news/
Для этого я делал RewriteRul'ы для ссылок типа /news на ссылку /index.php?page=news а когда понадобилась еще и 301 переадресация с /index.php?page=news на /news - вот здесь и возникла циклическая адресация.
Я запутался в этом д#$%ме(