我正在尝试使用ISAPI重写(mod_rewrite)创建一个与之匹配的正则表达式:
www.website.com/product.aspx?iid=201
我试过了:
^(.*)/product.aspx?iid=201
并且:
^(.*)/product\.aspx\?iid=201
两种表达似乎都不匹配。
答案 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点:)