1

我正在研究使用 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 包装器更强大的方法?

4

3 回答 3

1

您在谈论路由,很多框架都这样做。看看这个答案:https ://stackoverflow.com/questions/115629/simplest-php-routing-framework

于 2012-06-18T19:00:35.390 回答
0

我建议和使用的是一个 php 文件,每次遇到 404 时都会调用它并存储遇到的 url。然后每周一次我去管理控制台,我将拼写错误的旧网址,搜索引擎的历史网址映射到当前现有的网址,然后我点击解析按钮,它会为我喷出一个新的更新的 .htaccess 文件。

这样可以减轻数据库的负载、加载时间、编译时间和重定向时间。

只是我的2美分。

于 2012-06-18T19:00:44.670 回答
0

没有机会对此进行测试,但这个答案向我指出了 Apache 的FallbackResource指令,这听起来很有希望。

于 2012-11-28T19:31:09.553 回答