htaccess 301 与重定向 404
Posted
技术标签:
【中文标题】htaccess 301 与重定向 404【英文标题】:htaccess 301 vs redirecting 404 【发布时间】:2014-08-29 15:52:06 【问题描述】:我正在从 Drupal 迁移我的网站,在此过程中,所有网址都将更改为新格式。我一直在通过 .htaccess
文件查看 301 重定向以完成工作。总共有大约 150 个页面,每个页面都有大约 2 种访问方式(用户友好的“blog/foo”和默认的“node/123”——我不包括每个 url 前面都带有的“unclean”版本) “?q =”)。它们并没有真正遵循一种格式,所以我不能有一个规则来捕捉它们(并在黑暗中绑定它们)。
当读取一个.htaccess
时,似乎对于每个url请求,都会访问.htaccess
,并且所有规则都按顺序运行,看是否匹配。这意味着对于我的约 150 个页面,在最坏的情况下将测试大约 300 条规则(用户输入不需要重定向的 url)。对吗?
使用 301 重定向与让所有旧 url 访问自定义 404 页面的优缺点是什么,后者会尝试在那里进行重定向?因此,服务器不会为每个 url 运行 300 条规则,而是仅在访问 404 页面时运行它们。
一般规则是使用 301 来将 pagerank 或其他什么传递给新的 url?
【问题讨论】:
【参考方案1】:当读取一个.htaccess时,似乎对于每个url请求,都会访问.htaccess,并且所有规则都按顺序运行,看是否匹配。这意味着对于我的约 150 个页面,在最坏的情况下将测试大约 300 条规则(用户输入不需要重定向的 url)。对吗?
.htaccess 文件被缓存,其中的任何指令都被缓存。在服务器或虚拟主机配置中使用 mod_rewrite 规则肯定会更快,但是当我在 htaccess 文件中有数万条规则时,我从未注意到任何明显的减速。在您的情况下,可能会有大约 150 种模式被应用,它可能不会被注意到。
这里的其他选项是通过脚本或通过 CMS 中的插件来执行此操作,这是否比网络服务器本身内的动态规则更快是有争议的。
另一种选择是使用RewriteMap
,您只能从服务器/虚拟主机配置中进行设置。它允许您创建匹配的外部映射(通过文本文件、程序、数据库查询等),您可以使用单个规则从 htaccess 文件中使用。
使用 301 重定向与让所有旧 url 访问自定义 404 页面的优缺点是什么,后者会尝试在那里进行重定向?因此,服务器不会为每个 url 运行 300 条规则,而是仅在访问 404 页面时运行它们。
一般规则是使用 301 来将 pagerank 或其他什么传递给新的 url?
是的,如果您 404,与您的旧链接相关联的任何元数据都将消失。如果您 301 将其重定向到新位置,则您会随身携带与旧链接相关联的任何元数据。如果您不关心 SEO 或元数据,那么让这些链接 404 肯定更容易。
【讨论】:
以上是关于htaccess 301 与重定向 404的主要内容,如果未能解决你的问题,请参考以下文章
使用 RewriteRules 和 404 进行 301 重定向