【发布时间】:2011-10-19 05:21:41
【问题描述】:
我正在开发一个基于 PHP MVC 框架的 CMS 系统。
我的 WAMP 服务器上有以下目录结构:
c:/<webroot>/application/ (contains all Ms Vs and Cs)
c:/<webroot>/config/ (contains application.ini)
c:/<webroot>/public/ (contains /img, /js, & /css)
c:/<webroot>/index.php (entry point of MVC)
c:/<webroot>/.htaccess
.htaccess 包含:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
系统中的其他任何地方都没有 .htaccess 文件。
.htaccess 规则旨在实现以 Zend 框架样式 http://HTTP_HOST/controller/action/key/value/.../key/value/ 样式 URL 重写 URL
据我所知,当 MVC 位于 Web 主机的根目录时,它运行良好。
然而,只要我深入一个文件夹,一切都会崩溃: 例如,我希望从根目录托管 MVC 网站,并将其基于 MVC 的 CMS 托管在深层 (/admin/) 上。拥有上面的 .htaccess 文件似乎会将所有对 CMS 的请求都退回到根站点...每个文件夹是否需要不同的 .htaccess 规则?是否可以编写规则来忽略根 .htaccess 文件对 CMS 的请求?
谢谢!
【问题讨论】:
-
您有 2 个选项:1) 在
/admin/文件夹中创建另一个具有所需规则的 .htaccess -- 它仅适用于以/admin/开头的 URL; 2) 将所有重写规则放入根文件夹的 .htaccess 中,但 CMS (/admin/) 的规则放在 MVC 规则之前。 -
#1 - 您应该完整回答这个问题,而不是评论。 #2 - 您能否提供两个文件夹的 .htaccess 文件内容示例?我相信我试过这个,但不管两者都有,ROOT 文件夹中的重写规则取代了子文件夹中的规则。
标签: php .htaccess mod-rewrite url-rewriting