.htaccess и 301 редирект
Код:
http://mydomain.com/catalog/index.php?page=3
Код:
http://mydomain.com/catalog/page_3/
Код:
http://mydomain.com/catalog/index.php?page=3&cat=2
Код:
http://mydomain.com/catalog/page_3/rubr_2/
Цитата: -=Orlangur=-
Помогите никак не получается.
Что сами сделали? Такие вопросы тут появляются каждый день, можно использовать поиск и найти ответ за минуту.
Редирект в mod_rewrite делается флагом [R=код]. 301 по-умолчанию, если код опущен: [R].
Цитата: Proger_XP
Что сами сделали? Такие вопросы тут появляются каждый день, можно использовать поиск и найти ответ за минуту.
Редирект в mod_rewrite делается флагом [R=код]. 301 по-умолчанию, если код опущен: [R].
Редирект в mod_rewrite делается флагом [R=код]. 301 по-умолчанию, если код опущен: [R].
Делаю вот так:
Код:
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} ^(.*&)?page=([0-9]+)?$ [NC]
RewriteRule ^(notices/index\.php)?$ catalog/page_%2/? [NC,R=301,L]
RewriteBase /
RewriteCond %{QUERY_STRING} ^(.*&)?page=([0-9]+)?$ [NC]
RewriteRule ^(notices/index\.php)?$ catalog/page_%2/? [NC,R=301,L]
Он нормально делает линк http:// mydomain.com/catalog/page_3/ как получить второй вариант типа http:// mydomain.com/catalog/page_3/rubr_2/ как грамотно разобрать QUERY_STRING и как прописать правило?
Если нужно искать в любом порядке, то сделайте два блока RC+RR. Например:
Код:
RewriteCond %{QUERY_STRING} [&^]page=([0-9]*)[&$] [NC]
RewriteRule ^(notices/index\.php)?$ catalog/page_%1/? [NC]
RewriteCond %{QUERY_STRING} [&^]cat=([0-9]*)[&$] [NC]
RewriteRule ^(catalog/page_[0-9]*)/?$ $1/cat_%1/? [NC,R,L]
RewriteRule ^(catalog/page_[0-9]*/?)$ $1 [NC,R,L]
RewriteRule ^(notices/index\.php)?$ catalog/page_%1/? [NC]
RewriteCond %{QUERY_STRING} [&^]cat=([0-9]*)[&$] [NC]
RewriteRule ^(catalog/page_[0-9]*)/?$ $1/cat_%1/? [NC,R,L]
RewriteRule ^(catalog/page_[0-9]*/?)$ $1 [NC,R,L]
Не уверен, поймёт ли mod_rewrite начало/конец строки в [], если нет, то поменяйте это на (&|$) или (&.*)?$, аналогично с ^.
Цитата: Proger_XP
Ну, если у вас переменные всегда будет в таком порядке (?page=&cat=), то просто допишите RewriteCond: page=[0-9]*(&cat=[0-9]*)? и добавьте %3 к RR.
Если нужно искать в любом порядке, то сделайте два блока RC+RR. Например:
Не уверен, поймёт ли mod_rewrite начало/конец строки в [], если нет, то поменяйте это на (&|$) или (&.*)?$, аналогично с ^.
Если нужно искать в любом порядке, то сделайте два блока RC+RR. Например:
Код:
RewriteCond %{QUERY_STRING} [&^]page=([0-9]*)[&$] [NC]
RewriteRule ^(notices/index\.php)?$ catalog/page_%1/? [NC]
RewriteCond %{QUERY_STRING} [&^]cat=([0-9]*)[&$] [NC]
RewriteRule ^(catalog/page_[0-9]*)/?$ $1/cat_%1/? [NC,R,L]
RewriteRule ^(catalog/page_[0-9]*/?)$ $1 [NC,R,L]
RewriteRule ^(notices/index\.php)?$ catalog/page_%1/? [NC]
RewriteCond %{QUERY_STRING} [&^]cat=([0-9]*)[&$] [NC]
RewriteRule ^(catalog/page_[0-9]*)/?$ $1/cat_%1/? [NC,R,L]
RewriteRule ^(catalog/page_[0-9]*/?)$ $1 [NC,R,L]
Не уверен, поймёт ли mod_rewrite начало/конец строки в [], если нет, то поменяйте это на (&|$) или (&.*)?$, аналогично с ^.
Попробовал как написано выше
Код:
RewriteCond %{QUERY_STRING} ^(.*&)?page=([0-9]*)(&.*)?$ [NC]
RewriteRule ^(notices/index\.php)?$ catalog/page_%2/? [NC]
RewriteCond %{QUERY_STRING} ^(.*&)cat=([0-9]*)(&.*)?$ [NC]
RewriteRule ^(catalog/page_[0-9]*)/?$ $1/cat_%2/? [NC,R=301,L]
RewriteRule ^(catalog/page_[0-9]*/?)$ $1 [NC,R=301,L]
RewriteRule ^(notices/index\.php)?$ catalog/page_%2/? [NC]
RewriteCond %{QUERY_STRING} ^(.*&)cat=([0-9]*)(&.*)?$ [NC]
RewriteRule ^(catalog/page_[0-9]*)/?$ $1/cat_%2/? [NC,R=301,L]
RewriteRule ^(catalog/page_[0-9]*/?)$ $1 [NC,R=301,L]
Получается что при таком виде линка http:// mydomain.com/catalog/index.php?page=3 так и при этом http:// mydomain.com/catalog/index.php?page=3&cat=2 редирект совершается одинаково на http:// mydomain.com/catalog/page_3/
Цитата: -=Orlangur=-
Получается что при таком виде линка http:// mydomain.com/catalog/index.php?page=3 так и при этом http:// mydomain.com/catalog/index.php?page=3&cat=2 редирект совершается одинаково на http:// mydomain.com/catalog/page_3/
А, ну да, я же стираю QS в первом RR. Убери ? из конца первого RR и добавь его в конец 3: "$1?".
Кстати, зачем ты убрал ? из: ^(.*&)[COLOR="Red"]?[/COLOR]cat?
Тогда у тебя не будет совпадений с запросами вида ?cat=c&page=p
Цитата: Proger_XP
А, ну да, я же стираю QS в первом RR. Убери ? из конца первого RR и добавь его в конец 3: "$1?".
Кстати, зачем ты убрал ? из: ^(.*&)[COLOR="Red"]?[/COLOR]cat?
Тогда у тебя не будет совпадений с запросами вида ?cat=c&page=p
Кстати, зачем ты убрал ? из: ^(.*&)[COLOR="Red"]?[/COLOR]cat?
Тогда у тебя не будет совпадений с запросами вида ?cat=c&page=p
Все заработало. Переставил как написано и вернул [COLOR="Red"]?[/COLOR]. Спасибо.
Чтоб было так-же как вход в админку AC, при нормальных настройках безопасности.