[英]Drupal: Dynamic mass 301 redirecting
我们有近十万条路径需要301重定向到新结构。 就像是:
lang.site.com/section/subsection/article
->
lang.site.com/newsection/newsubsection/article
过去,当从domain.com迁移到newdomain.com时,我们只需要放置一个.htaccess
文件,其中包含10k +脚本生成的行,将旧路径与新路径匹配,就可以了。 它不会影响新域的性能,因为.htaccess
仅在用户尝试访问旧域时由Apache读取。
现在这将无法工作,因为域名没有更改,只能更改路径的结构。 更改路径的数量接近10万个标记,因此很明显,Apache为每个页面加载读取10万行.htaccess
的想法是荒谬的。
我很想知道一些如何以较低的性能成本正确实现这一点的想法。 我并不是要你们提供现成的解决方案,只是在集思广益中提供一些帮助,这将是我们用例中最可行的解决方案。
我们还将在Apache的前面放置一台Varnish服务器来提供缓存的内容,但是我想以下解决方案仍然可以使用,因为Varnish无法满足的请求将在我们的LAMP环境中转发到Apache。
我的想法是:
html.tpl.php
文件,该文件具有页面的<header>
部分 html.tpl.php
,我们将检查MySQL数据库以查看用户请求的路径是否在新的pathalias
表中
old path <-> new path
关系:
header('Location:');
到301,将用户重定向到正确的新位置 我们还被告知要更新旧的域重定向,以不带301链接的方式将用户直接带到新站点。 我想我们可以利用相同的数据库检查来查看最旧路径与通过旧路径的最新路径之间是否存在关系。 幸运的是,我们已经存储了所有这些甚至更旧的关系,以防万一,现在它们可以派上用场了。
如果您通读过任何有关如何以最佳方式解决此问题的想法,将不胜感激:)
这就是我会尝试的
1)简单的方法。
试用模块http://drupal.org/project/pathauto
您可以为模块定义模式。
lang.site.com/newsection/newsubsection/article
lang.site.com/[node:newsection]/[term:newsubsection]
// This is an example not the actual pattern u will use. If you can't seem to get this then
revert back.
仅在cron作业期间创建路径。 因此您的表现不会受到影响。
2)否则上述方法应该足够好。 您可以编写一个模块并实现以下逻辑
A-hook_cron()//在每次执行cron时,都应运行以下命令B-使用node_load()加载节点C-检查节点的uri是否与您的模式D-如果不匹配,请进行更改。 E-使用node_save()保存节点
欢呼雀跃
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.