根据查询字符串创建重写规则

时间:2012-12-12 15:40:19

标签: .htaccess iis rewrite

我在.htaccess文件中有很多重定向。现在,我需要根据URL的查询字符串值为URL创建重写规则。

http://www.mydomain.com/subdir/RentalDetails.aspx?RentalId=1072

此网址的任何流量都应转到...

http://www.mydomain.com/subdir/RentalDirectory.aspx

我已经研究并发现了一些关于这个主题的好帖子,并想出了这个......

#discontinued properties
RewriteCond %{REQUEST_URI} ^/RentalDetails\.aspx$
RewriteCond %{QUERY_STRING} ^RentalId=1072$
RewriteRule ^(.*)$      /subdir/RentalDirectory.aspx?                [R=301,L]

不幸的是,它不起作用。有人可以帮我弄清楚我哪里出错了吗?非常感谢提前!

1 个答案:

答案 0 :(得分:1)

我猜RewriteCond错了:uri看起来不应该像

^/RentalDetails\.aspx$

[编辑 - 我终于设法找到了实际的文档,发现查询字符串是一个红色的鲱鱼。但是,我在字符串的开头也错过了'^',这可能导致了这个]

由于表达式开头的^表示“字符串必须从此处开始”,并且末尾的$表示“字符串在此处结束”,因此正则表达式限制性太强,并且不符合你的需要。

从apache文档中,REQUEST_URI变量排除了查询字符串,因此不是问题。但是,您尝试将/subdir/RentalDetails.aspx的网址与必须以单词/RentalDetails

开头的正则表达式匹配

尝试类似

的内容
# No ^ at the start, this will match RentalDetails.aspx in any location
/RentalDetails\.aspx$

或者

# This will only match in the /subdir/ directory.
^/subdir/RentalDetails\.aspx$