htaccess因为“?”而没有重定向

时间:2011-11-14 11:49:32

标签: .htaccess

我的htaccess有问题,我们移动了一个网站,他们旧的网站上有很多重复的网页,有?cat_id=88等等......在他们身上,我正在尝试要重定向页面但它不起作用,我已将重定向代码放在下面,我已经将mantra.html重定向到/Mantra但是?cat_id=79的版本没有重定向,它只是忽略了?

之后的所有内容
Redirect 301 /mantra.html?cat_id=79 http://www.website.co.uk/Mantra

1 个答案:

答案 0 :(得分:1)

重定向仅接受路径,而不接受带有查询字符串的路径。你可以使用mod_rewrite

RewriteEngine on
RewriteCond %{QUERY_STRING} ^cat_id=79$
RewriteRule ^mantra\.html$ /Mantra? [R=302,L]

一旦你开始工作就将302更改为301(301被浏览器积极缓存并使调试成为一场噩梦)。

编辑在末尾添加了?以删除任何查询字符串。如果查询字符串中没有其他数据,Apache将删除?,因此最终用户永远不会看到它。