php - Apache PHP 项目根处理程序/前端 Controller 模式

标签 php apache .htaccess web

我在本地使用 php 运行 Apache 2.4。我的目标是每次发出请求时,它都会链接到项目文件夹的根目录,http://localhost/project_root/

例如:

http://localhost/project_root/ 被请求并链接到 http://localhost/project_root/index.php

第二个例子:

http://localhost/project_root/foo/bar 将链接到 http://localhost/project_root/index.php

最终的想法是 http://localhost/project_root/index.php 处理资源的重定向和加载。

在此先致谢,欢迎提出任何建议。

最佳答案

对于这类事情,我在应用程序的根目录中放置了一个 .htaccess 文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d  #Optional: Only if it's not a valid directory
RewriteCond %{REQUEST_FILENAME} !-f  #Only if it's not a valid file
RewriteRule (.*) index.php?q=$1 [L,QSA]

这会将 url 的剩余部分作为 $_GET['q'] 传递,并保留任何其他参数。

您需要确保在 Apache 中启用了 mod_rewrite,并且在启用站点中将 AllowOverride 设置为 all

关于php - Apache PHP 项目根处理程序/前端 Controller 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418106/

相关文章:

php - 将网站的大部分 https 重定向到 http(除了一个部分)

linux - .htaccess 是否会干扰嵌套的 .htaccess/.htpasswd?

apache 提供了错误的 ssl 证书

php - 如何将排名中的下一行获取到 "rank of last id"?

php - 使用 Zend 框架 2 将数据插入和更新到两个表(事务)

logging - 如何限制 Apache 访问日志的大小,并限制其保留的归档日志的数量?

c# - 访问 HTTPS Web 服务器时抛出 HttpWebRequest System.Net.WebException

php - 无法在 Laravel 中检索获取变量

php - MySQL复杂的LEFT JOIN来模拟UNION之类的查询

php - 如何在 Mac OS 10.8 的 PHP 中启用 IMAP 模块