redirectmatch со знаком вопроса не работает

RO
На сайте с 13.07.2009
Offline
88
786

почему не срабатывает редирект если в параметре «откуда» есть знак вопроса?

RedirectMatch 301 ^/somepage/([0-9]+)/$ /$1 - работает

RedirectMatch 301 ^/somepage/([0-9]+)/?ok$ /$1 - не работает

RedirectMatch 301 ^/somepage/([0-9]+)/\?ok$ /$1 даже при обратном слеше не работает, а он вроде как должен был помочь. что исправить?

DiAksID
На сайте с 02.08.2008
Offline
236
#1

не должно работать ни с прямым ни с обратным слешем. параметры редиректятся типа так (для вашего варианта):

RewriteCond %{QUERY_STRING} ^ok$

RewriteRule ^/somepage/([0-9]+)/ /$1?

show must go on !!!...
RO
На сайте с 13.07.2009
Offline
88
#2
DiAksID:
не должно работать ни с прямым ни с обратным слешем. параметры редиректятся типа так (для вашего варианта):

RewriteCond %{QUERY_STRING} ^ok$
RewriteRule ^/somepage/([0-9]+)/ /$1?

так тоже не редиректится. а почему именно знак вопроса так обламывает весь redirectmatch ?

DiAksID
На сайте с 02.08.2008
Offline
236
#3
RedOK:
так тоже не редиректится. а почему именно знак вопроса так обламывает весь redirectmatch ?

потому что после ? идёт QUERY_STRING и для её отлова и обработки mod_rewrite-ом необходимо соответствующее RewriteCond перед RewriteRule в htaccess

должно работать условие - оно просто обрубает и /somepage/ и QUERY_STRING, и переадресует на чистую /([0-9]+) . последний знак вопроса в RewriteRule это как раз запрет передачи параметров.

если вы хотели на /([0-9]+).html или /([0-9]+)/ тогда так и напишите, только знак вопроса в конце не забудьте...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий