Apache 的 mod_rewrite VS。 PHP路由?

Posted

技术标签:

【中文标题】Apache 的 mod_rewrite VS。 PHP路由?【英文标题】:Apaches mod_rewrite VS. PHP routing? 【发布时间】:2011-03-05 17:44:16 【问题描述】:

几天来,我一直在尝试制定一个简单的 mod_rewrite 规则来创建友好的 URL,我的网络主机启用了 mod_rewrite,但我无法让它工作。

我发布的所有下一个问题:

    .htacces to create friendly URLs Friendly URLs with .htaccess .htacces NOT working…

没有一个答案有效,所以我现在正在考虑使用简单的 php 路由,我想知道两者之间是否存在很大的性能或 SEO 差异。如果有,也许您知道如何解决我的问题中发布的 mod_rewrite 问题。

谢谢。

【问题讨论】:

【参考方案1】:

如果你只对 PHP 文件使用 PHP 路由,性能方面没有问题:解释器无论如何都会启动,一个新进程启动,内存分配等等。

但是,如果您也计划路由对静态资源(如图像和样式表)的请求,不要在任何情况下都使用 PHP 路由。这太耗费资源了,而不是 PHP 的目的。

我会说mod_rewrite 是更好、更精简的解决方案,值得一试。

【讨论】:

使用 mod-rewrite 我只想将扩展名为 .php 的文件发送到 index.php。我是怎么做到的? @Jonathan 好吧,这取决于......但是,你已经在你的其他问题中了。似乎有一些神秘的障碍为什么它不适合你。抱歉,我无法对那里已经说过的内容提供任何新的见解。【参考方案2】:

我更喜欢在请求的文件不存在时启动的路由,就像在 Lighttpd 中这样:

server.error-handler-404 = "/index.php"

如果您了解如何在 Apache 中执行此操作,您的脚本将更加兼容跨网络服务器,因为 .htaccess 中的 Apache 的 mod_rewrite 条件不适用于 Lighttpd。

【讨论】:

当其他事情不起作用时,这应该用作最后一根稻草。使用此设置,每个页面请求都会生成一个被记录的 404,并且取决于服务器软件,并非原始请求中的所有环境变量总是重新路由到 404 处理程序(至少在 Apache )。

以上是关于Apache 的 mod_rewrite VS。 PHP路由?的主要内容,如果未能解决你的问题,请参考以下文章

apache mod_rewrite 模块未安装

Ubuntu系统启用Apache Mod_rewrite模块

Apache如何开启Mod_rewrite模块以及PHPWind伪静态(全伪)

在Apache中使用mod_rewrite模块重写URL

mod_rewrite 的问题 // Apache 2.2 // OpenSUSE 11.3

Apache2 - 使用 mod_rewrite 代理到另一个域