有外部链接指向我的网站(我无法控制),其中包含错误的查询字符串。这是一个例子:
http://www.example.com/page/&query=string
以上结果是我网站上的404页面。由于我的网站上存在“http://www.example.com/page/”,因此我想使用.htaccess文件删除任何错误的查询字符串,以便用户可以获得正确的内容。
所以我想要重写或重定向:
http://www.example.com/page/&query=string -> http://www.example.com/page/
感谢任何和所有帮助!
答案 0 :(得分:1)
以下内容应如您所说,向请求浏览器发出301重定向。
RewriteCond %{QUERY_STRING} query=string
RewriteRule ^/page/ /page/ [R=301]
但是,您只想提供正确的内容,可以避免301重定向:
RewriteCond %{QUERY_STRING} query=string
RewriteRule ^/page/ /page/ [PT,NS,E=QUERY_STRING:]
它将完全删除QUERY_STRING,因此请注意。
如果你想重写一些不同的查询字符串,而不是全部用于/ page /
RewriteCond %{QUERY_STRING} query=badstring1 [OR]
RewriteCond %{QUERY_STRING} query=badstring2 [OR]
RewriteRule ^/page/ /page/ [PT,NS]
所有RewriteRules都假设您在某处有“RewriteEngine On”,您的主机可能已完成此操作。它还需要Apache中的mod_rewrite模块,我假设它是基于.htaccess请求使用的。
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
所有人都说这看起来非常不必要,因为如果页面不需要它们会忽略参数,除非当然这是传递给脚本的,在这种情况下你应该能够在代码中处理它,但也许你有一个导致问题的框架。
这是一本关于这个主题的好书: Pro Apache 见第277-299页