0

我在 .htaccess 文件中有很多重定向。现在,我需要根据它的查询字符串值为 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]

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

4

1 回答 1

1

我猜 RewriteCond 是错误的:uri 不应该看起来像

^/RentalDetails\.aspx$

[已编辑——我终于设法找到了实际的文档,发现查询字符串是一条红鲱鱼。但是,我也错过了字符串开头的“^”,这可能是造成这种情况的原因]

由于^表达式的开头表示“字符串必须从这里开始”,而$结尾表示“字符串在此处结束”,因此您的正则表达式限制性太强,与您需要的内容不匹配。

从 apache 文档中,该REQUEST_URI变量不包括查询字符串,所以这不是问题。但是,您正在尝试将 url/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$
于 2012-12-12T15:46:54.687 回答