.htaccess文件中哪个是正确/更好的规则?

时间:2011-10-17 10:51:26

标签: apache .htaccess seo http-status-code-301

我想从我的网站上删除一个已经被Google编入索引的wiki部分,因此我不想删除它,并在删除页面时最终加载404。我想编写一条规则,将wiki中所有URL的请求页面重定向到另一个页面。所以基本上我想将包含文件夹名称/ wiki /的任何URL重定向到另一个页面。如果这应该是RewriteRule,我有点困惑:

RewriteRule ^wiki/* http://www.mydomain.com [R=301,L]

或RedirectMatch:

RedirectMatch 301 /wiki/(.*) http://www.mydomain.com

如果这是正确/最好的方法,我将不胜感激。如果这是正确的方法,我将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

他们都会做同样的工作。 但是从SEO的角度来看这个想法并不好 - 对于SEO来说会更好地返回410代码(410 Gone - page在这里但不再可用)。

在任何情况下:建议使用RedirectMatch方法 - 它使用的CPU略少。另一方面,RewriteRule更灵活。

例如:您有example.com/wiki/somepage?say=hello之类的网址。如果您使用RedirectMatch,那么新网址将为example.com/?say=hello - 您可以看到查询字符串已被复制。使用RewriteRule,您可以轻松,完美地删除它,因此新网址只有example.com/

以下是规则(略微优化):

RewriteRule ^wiki/ http://%{HTTP_HOST}/? [R=301,L]

OR

RedirectMatch 301 ^/wiki/.*$ http://www.mydomain.com/?

两个规则中的?用于删除现有查询字符串。使用RewriteRule,当重定向发生时(mod_rewrite在这方面非常聪明),它将不存在,而RedirectMatch非常直接并将保留它(如果你正在寻找非常好/正确的URL,这可能看起来有点奇怪)