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路由?的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu系统启用Apache Mod_rewrite模块
Apache如何开启Mod_rewrite模块以及PHPWind伪静态(全伪)