正则表达式重写aspx?iid =

时间:2011-06-22 20:50:26

标签: regex mod-rewrite isapi-rewrite

我正在尝试使用ISAPI重写(mod_rewrite)创建一个与之匹配的正则表达式:

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

我试过了:

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

并且:

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

两种表达似乎都不匹配。

2 个答案:

答案 0 :(得分:1)

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

在这里工作:

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

所以我希望它也适用于IIS

如果您使用的是java,那么您将逃避第二个解决方案:

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

也许IIS喜欢那种转义风格(不能在这里测试)

答案 1 :(得分:1)

以下规则会将{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]

你必须记住--Apache的mod_rewrite,Helicon ISAPI_Rewrite v3,IIS 7.x - RewriteRule指令(或它在IIS中的等效指令)仅适用于URL的“path”部分。如果您需要使用域名,协议,服务器端口,查询字符串等 - 您必须使用RewriteCond

上面的规则完全正常 - 我自己在我的一台服务器上安装了Helicon ISAPI_Rewrite v3(IIS6,否则它将是IIS7和标准URL重写模块)。

如果您有任何疑问 - 请询问,但我很可能会在几个小时内回复 - 这是凌晨3点:)