Apache mod_rewrite查询字符串问题

时间:2011-05-05 11:36:24

标签: .htaccess mod-rewrite

我有一个旧网站 - 用asp编写。联系表单使用查询字符串来确定访问者看到的表单。

如果游客希望与我联系,可以点击以下链接:

http://example.com/contact.asp

如果他们希望提交错误 - 请点击以下链接

http://example.com/contact.asp?problem=true&.......

其他参数也会在problem nb:?problem=true&Customer...之后传递 - 但是,我只需要知道problem=true

在新网站中,我有两个页面:contact.html和help.html

当访问者访问contact.asp时,他们会被重定向到contact.html - 由于以下重定向规则:

RewriteRule ^contact\.asp$ http://example.com/contact-us.html [R=301,L]

但是,我遇到了很大的问题 http://example.com/contact.asp?problem=true重定向到help.html

我找到了大量的例子 - 但是没有一个可以工作..页面总是重定向到contact.html

我甚至已经注释掉了上面的重写规则,看看我的problem=true规则是否被覆盖......这返回了404.我的问题=真正的规则不起作用。

我一直在关注以下示例:http://www.simonwhatley.co.uk/apache-htaccess-query-string-redirects

所以回顾一下,我想将contact.asp?problem = true重定向到help.html,并将contact.asp重定向到contact.html

非常感谢,

罗布

1 个答案:

答案 0 :(得分:4)

在匹配查询字符串时,不确定您尝试了什么,但以下情况应该有效。

RewriteCond %{QUERY_STRING} ^problem=true
RewriteRule ^contact\.asp$ http://primarysite.net/help.html [R=301,L]

RewriteRule ^contact\.asp$ http://primarysite.net/contact-us.html [R=301,L]

希望有所帮助。