我正在研究使用 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 解析 / 数据库查找 / 重定向 / 等,然后简单地包含/the/appropriate/file.php
给定的请求。
这是一个合理的做法吗?这样的功能实际上是否可以mod_rewrite
直接使用?(除了数据库查找等)这会明显慢于mod_rewrite
?有没有比 PHP 包装器更强大的方法?