我不知道如何表达这个问题,但希望我的描述对我希望达到的目标更有意义。
我目前正在构建一个支持多个应用程序的框架。目录结构是这样的:
/applications/
--/admin/
----/www/
------/css/
--------/bootstrap.css
------/img/
--------/logo.png
--/gallery/
----/www/
/system/
/www/ <- web root
--/.htaccess
--/index.php
我正在使用 php 中的 PATH_INFO 数据对“漂亮的 url”进行 url 重写。
site.com/index.php/path/info/data/
将与
site.com/path/info/data/
所以一切都会通过那个 index.php
该框架的基本前提是,url的第一段将与应用程序名称相关:
site.com/admin/ <- will load the admin application
site.com/gallery/ <- will load the gallery application
site.com/ <- will load what ever the default application is (specified in a framework config)
现在这就是我想要这个重写规则做的事情(如果可能的话),我会使用一些示例 url 来帮助说明我的观点。
site.com/admin/login/
规则获取第一段管理员
规则检查应用程序目录中是否存在admin文件夹
如果存在,请使其可以通过site.com/admin/www/访问admin/www内容
禁用目录查看,只允许链接到文件,所以site.com/admin/www/img/不可访问,但site.com/admin/www/img/logo.png可访问
只有文件优先于 index.php 重写,因此site.com/admin/www/img/将被传递给 index.php,即使该文件夹存在,但site.com/admin/www/img/logo.png总是引用文件,除非它不存在,在这种情况下它被传递给 index.php
所以为了澄清,这里有一些链接以及我希望他们做什么(使用上面的示例目录列表):
site.com/ < index.php
site.com/admin/ < index.php
site.com/admin/www/ < index.php
site.com/admin/www/nonexistantfile.php < index.php
site.com/gallery/ < index.php
site.com/admin/www/css/ < index.php
site.com/admin/www/css/bootstrap.css < bootstrap.css
site.com/admin/www/img/logo.png < logo.png
虽然我可以使用框架本身做我想做的事,但是在每个资产负载上运行 uri 解析引擎和任何其他框架部分都太耗费资源了,这就是为什么我想使用 .htaccess 来处理这个问题
谢谢