Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Проблема с редиректом через htaccess
цитата
02/04/13 в 20:22
 EagleOwl
На некоторых доменах переместились страницы архивов на новый путь.

Например, было:
domain.com/index.shtml?page=1
domain.com/index.shtml?page=2
...
domain.com/index.shtml?page=20

Стало так:
domain.com/classic/index.shtml?page=1
domain.com/classic/index.shtml?page=2
...
domain.com/classic/index.shtml?page=20

Нужно реализовать редирект с кодом 301 на новые урлы.
Проблема состоит в том, что на прежнем месте есть index.shtml, но он
уже никак не может обработать параметр ?page
Т.е. надо редиректить только те запросы, которые содержат параметр
?page и не трогать другие. Ну и значение параметра тоже передать нужно
конечно.

Я пробовал такой .htaccess (в разных вариациях)

Код:
RedirectMatch 301 ^/index.shtml\?page=(.*)$ http://www.domain.com/classic/index.shtml?page=$1


Нихрена не работает.
Как такой редирект сделать?
цитата
02/04/13 в 20:41
 SAV
RewriteEngine on
RewriteRule ^index\.shtml\?page=([0-9]+)$ /classic/index.shtml?page=$1 [L]
цитата
02/04/13 в 20:46
 EagleOwl
Спасибо, я чуть иначе сделал, но этот метод счас тоже буду пробовать.
Я так сделал по совету саппорта:
RewriteCond %{QUERY_STRING} ^page=([0-9]*)$
RewriteRule ^index\.shtml$ http://www.domain.com/classic/index.shtml?page=%1 [R=301,L]

ХЗ правда как лучше.
цитата
02/04/13 в 20:49
 SAV
какое больше нравится

да, R=301, если он нужен, нужно в верхний вариант добавить по аналогии
цитата
02/04/13 в 20:50
 johndoe2
RewriteRule не работает на параметрах запроса. Он матчит только path

Код:
RewriteEngine on

RewriteCond %{QUERY_STRING} page=
RewriteRule ^index\.shtml$ /classic/index.shtml [L,QSA,R=301]
цитата
02/04/13 в 20:55
 EagleOwl
Ну мой вариант точно работает, проверено
цитата
02/04/13 в 20:58
 johndoe2
EagleOwl писал:

Ну мой вариант точно работает, проверено


Я про то, что SAV написал. Поддержка тебе все правильно научила
цитата
02/04/13 в 23:04
 SAV
johndoe2 писал:
RewriteRule не работает на параметрах запроса. Он матчит только path

Код:
RewriteEngine on

RewriteCond %{QUERY_STRING} page=
RewriteRule ^index\.shtml$ /classic/index.shtml [L,QSA,R=301]


что именно не работает?

в акцесе такие строки, уже мхом обросли, все работает
RewriteRule ^free-([^/]*)/?.*$ /jump_sutra.php?tag=$1 [L,QSA]
цитата
03/04/13 в 01:30
 johndoe2
SAV писал:
что именно не работает?

в акцесе такие строки, уже мхом обросли, все работает
RewriteRule ^free-([^/]*)/?.*$ /jump_sutra.php?tag=$1 [L,QSA]


У тебя мхом оброс матчинг query string в RewriteRule? Поздравляю trollface.png
цитата
03/04/13 в 08:22
 SAV
johndoe2 писал:
У тебя мхом оброс матчинг query string в RewriteRule? Поздравляю trollface.png

понял тебя, с утра icon_mrgreen.gif


Эта страница в полной версии