[英]Handling site-wide URL rewrites with PHP
我正在研究使用PHP(而不是mod_rewrite
)来处理URL规范化的可行性。 我希望能够将大量不同的URL映射到给定的物理PHP页面,并以更集中和可维护的方式处理301和404。 这将包括常见的拼写错误,别名,搜索引擎友好的URL参数等。 这些需求似乎超出了mod_rewrite
,因此我正在研究其他选项。
我想我将创建一个canonical.php
脚本,将每个页面映射到.htaccess中的以下内容( 从本文中借用 ):
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ canonical.php/$1?%{QUERY_STRING} [L]
然后canonical.php
会执行所有必要的URL解析/ db查找/重定向/等操作,然后为给定请求简单地包含/the/appropriate/file.php
。
这是合理的做法吗? 直接使用mod_rewrite
这样的功能实际上可行吗? (除了数据库查找等),这会明显比mod_rewrite
慢吗? 还有其他方法比PHP包装器更强大吗?
您正在谈论路由,许多框架都在这样做。 看看这个答案: https : //stackoverflow.com/questions/115629/simplest-php-routing-framework
我建议和使用的是一个每次遇到404时都会调用的php文件,它存储遇到的url。 然后,每周一次,我进入管理控制台,然后将拼写错误的错误键入的旧url,搜索引擎的历史url映射到当前现有的url,然后单击“解析”按钮,它为我弹出一个新的更新的.htaccess文件。
这样,您可以减轻数据库的负载,加载时间,编译时间和重定向时间。
只是我的2美分。
还没有机会进行测试,但是这个答案使我想到了Apache的FallbackResource
指令,这听起来很有希望。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.