Регулярное выражение для перезаписи aspx? Iid = - PullRequest
0 голосов
/ 23 июня 2011

Я пытаюсь создать регулярное выражение, соответствующее этому, используя перезапись ISAPI (mod_rewrite):

www.website.com/product.aspx?iid=201

Я пробовал:

^(.*)/product.aspx?iid=201

А:

^(.*)/product\.aspx\?iid=201

Кажется, ни одно выражение не соответствует ему.

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Правило ниже будет перенаправлять (301) с domain.com/product.aspx?iid=201 на domain.com/product/productname

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^iid=201 [NC]
RewriteRule ^product\.aspx$ /product/productname [NC,R=301,L]

Вы должны иметь в виду - mod_rewrite Apache, Helicon ISAPI_Rewrite v3, IIS 7.x - директива RewriteRule (или ее эквивалент в IIS) работает только с частью пути в URL. Если вам нужно работать с доменным именем, протоколом, портом сервера, строкой запроса и т. Д. - вы должны использовать RewriteCond.

Приведенное выше правило полностью работает - у меня есть Helicon ISAPI_Rewrite v3 на одном из моих серверов (IIS6, иначе это будет IIS7 и стандартный модуль перезаписи URL).

Если у вас есть какие-либо вопросы - пожалуйста, задавайте, но, скорее всего, я отвечу через несколько часов - здесь 3 часа ночи:)

1 голос
/ 23 июня 2011
^(.*)/product.aspx\?iid=201

работает здесь:

http://www.regexplanet.com/simple/index.html

Так что я ожидаю, что это также будет работать в IIS

Если бы вы использовали Java, вы бы избежали вашего второго решения, как это:

* * 1010

Может быть, IIS нравится этот стиль выхода (не могу проверить его здесь)

...