.htaccess 301 редирект со скобками в url

P8
На сайте с 02.06.2009
Offline
12
1733

Здравствуйте.

Помогите мне разобраться, мне надо перелинковаться с

http://www.my-site.ru/catalogue(2).php?id=290

на
http://www.my-site.ru/goods.php?id=6428

пишу так:

RewriteEngine On

Options +Followsymlinks

потом это работает:
RewriteCond %{QUERY_STRING} ^id=4$
RewriteRule goods.php http://www.my-site.ru? [R=301,L]

а это нет:
RewriteCond %{QUERY_STRING} ^id=290$
RewriteRule catalogue(2).php http://www.my-site.ru/goods.php?id=6428? [R=301,L]

причина в скобках "(" и ")", т.е. в этом "catalogue(2).php".

Как обойти?

M1
На сайте с 13.02.2007
Offline
165
#1

gormarket
На сайте с 29.12.2010
Offline
47
#2

а это нет:
RewriteCond %{QUERY_STRING} ^id=290$
RewriteRule catalogue(2).php http://www.my-site.ru/goods.php?id=6428? [R=301,L]

Часть строки "catalogue(2).php" здесь рассматривается как регулярное выражение, а в регулярных выражениях символы скобок и символ точки имеют специальное значение. Чтоб такие символы рассматривались программой "как есть", их нужно экранировать (поставить перед ними символ "\"). Тогда должно работать.


RewriteRule catalogue\(2\)\.php http://www.my-site.ru/goods.php?id=6428? [R=301,L]
Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
P8
На сайте с 02.06.2009
Offline
12
#3
gormarket:
Часть строки "catalogue(2).php" здесь рассматривается как регулярное выражение, а в регулярных выражениях символы скобок и символ точки имеют специальное значение. Чтоб такие символы рассматривались программой "как есть", их нужно экранировать (поставить перед ними символ "\"). Тогда должно работать.

RewriteRule catalogue\(2\)\.php http://www.my-site.ru/goods.php?id=6428? [R=301,L]

Спасибо, заработало, только в конце нового url добавилось "%3f".

т.е. получилось так http://www.my-site.ru/goods.php?id=6428%3f

но страница загрузилась та что нужно

gormarket
На сайте с 29.12.2010
Offline
47
#4

Спасибо, заработало, только в конце нового url добавилось "%3f".

Это второй символ "?" (что после "6428") преобразовался в "%3f"

Уберите этот символ, он не нужен

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