htaccess 301 vs重定向404

时间:2014-07-08 19:07:42

标签: .htaccess web http-status-code-404 http-status-code-301

我正在从Drupal迁移我的网站,并且在此过程中所有网址都将更改为新格式。我一直在查看通过.htaccess文件的301重定向来完成工作。总共有大约150页,每个页面有两种方式可以访问它(用户友好的“blog / foo”,默认的“node / 123” - 我不包括“unclean”版本,其中每个url都附加了“q =”)。他们并不真正遵循一种格式,所以我不能有一条规则来捕捉它们(并且在黑暗中绑定它们)。

当读取一个.htaccess时,似乎对于每个网址请求,都会访问.htaccess,并按顺序运行所有规则,以查看是否匹配。这意味着对于我的~150页,在最坏的情况下将测试大约300个规则(用户输入不需要重定向的URL)。是吗?

使用301重定向的优缺点是什么?让所有旧网址都打到自定义404页面,这会尝试在那里进行重定向?因此,不是服务器为每个URL运行300个规则,而是仅在访问404页面时运行它们。

一般规则是使用301以便将pagerank或其他内容传递给新网址吗?

1 个答案:

答案 0 :(得分:1)

  

当读取一个.htaccess时,似乎对于每个url请求,都会访问.htaccess,并按顺序运行所有规则,以查看是否匹配。这意味着对于我的~150页,在最坏的情况下将测试大约300条规则(用户输入不需要重定向的URL)。是吗?

缓存.htaccess文件,并缓存其中的所有指令。在服务器或vhost配置中使用mod_rewrite规则肯定会更快,但是当我在htaccess文件中获得数以万计的规则时,我从未注意到任何显着的减速。在您的情况下,可能会有约150种模式被应用,但它可能不会引人注意。

此处的其他选项是通过脚本或CMS中的插件来完成,并且它是否比网络服务器本身内的动态规则更快,这是值得商榷的。

另一种选择是使用RewriteMap,这是您只能从服务器/ vhost配置设置的。它允许您创建匹配的外部映射(通过文本文件,程序,数据库查询等),您可以使用单个规则从htaccess文件中使用这些匹配。

  

使用301重定向的优缺点是什么?让所有旧网址都打到自定义404页面,这会尝试在那里进行重定向?因此,不是服务器为每个URL运行300个规则,而是仅在访问404页面时运行它们。

     

一般规则是使用301以便将pagerank或其他内容传递给新网址吗?

是的,如果您是404,那么与您的旧链接相关联的任何元数据都将消失。如果您将301重定向到新位置,则随身携带与旧链接关联的元数据。如果您不关心SEO或元数据,那么让这些链接404肯定更容易。