0

有指向我的网站(我无法控制)的外部链接包含错误的查询字符串。这是一个例子:

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/

任何和所有的帮助表示赞赏!

4

1 回答 1

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 页

于 2012-05-07T23:26:04.597 回答