我正在尝试使用ISAPI重写(Mod_rewrite)创建一个与此匹配的正则表达式:
www.website.com/product.aspx?iid=201我试过了:
^(.*)/product.aspx?iid=201和:
^(.*)/product\.aspx\?iid=201这两个表达式似乎都不匹配它。
发布于 2011-06-23 10:08:35
下面规则将从domain.com/product.aspx?iid=201重定向(301)到domain.com/product/productname
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^iid=201 [NC]
RewriteRule ^product\.aspx$ /product/productname [NC,R=301,L]您必须记住-- Apache、Helicon ISAPI_Rewrite v3、IIS7.x -- RewriteRule指令(或其在IIS中的等价物)仅适用于URL的"path“部分。如果您需要处理域名、协议、服务器端口、查询字符串等,则必须使用RewriteCond。
上面的规则是完全有效的--我确实在我的一台服务器上安装了Helicon ISAPI_Rewrite v3 (IIS6,否则它就是IIS7和标准的网址重写模块)。
如果你有任何问题--请提问,但我很可能会在几个小时内回答--现在是凌晨3点:)
发布于 2011-06-23 05:18:26
^(.*)/product.aspx\?iid=201适用于以下位置:
http://www.regexplanet.com/simple/index.html
所以我希望它也能在IIS中工作
如果你使用的是java,你会像这样避开你的第二个解决方案:
"^(.*)/product\\.aspx\\?iid=201"也许IIS喜欢这种风格的转义(不能在这里测试)
https://stackoverflow.com/questions/6446389
复制相似问题