【发布时间】:2014-02-21 03:34:04
【问题描述】:
我正在构建一个具有自动加载 php 功能的站点,以检查控制器中是否存在类名。该函数在 index.php 中,并在站点上的每个 url 上运行,然后根据需要使用 php 进行重定向。
我已在我的文档根目录中添加了一个名为 engine 的新子目录。在这个子目录中,有一些单独的类需要在不通过文档根目录中主 index.php 中的自动加载功能的情况下运行。
我正在寻找一个 .htaccess 规则,它允许我从加载 index.php 的默认重写规则中排除引擎子目录和其中的所有文件/文件夹。
以下是我的 .htaccess 文件示例,显示了我尝试过的 3 种不同的排除规则。
规则 2 和规则 3 没有任何影响。规则 1 将对引擎子目录中任何内容的所有请求重定向到该子目录中的 index.php。使用规则 1 时,它似乎丢失了请求 uri 的其余部分。
例如,如果我想加载 engine/subfolder/lib/file.php 规则,只需将我发送到 engine/index.php。我想我可能在该规则中遗漏了一些小东西,需要附加请求 uri 的其余部分。
Options +FollowSymLinks
RewriteEngine on
#rule 1
RewriteCond %{REQUEST_URI} !^/engine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ engine [L,QSA]
#rule 2
RewriteRule ^(engine)($|/) - [L]
#rule 3
RewriteRule ^(engine).* - [NC,L]
RewriteRule ^([^/\.]+).html$ index.php?controller=contents&method=viewGeneric&view=generic&link=$1 [L]
RewriteRule ^(/)?$ index.php?controller=contents&method=viewHome&view=home [L,QSA] # Default load
TL;DR 所以我的问题是:如何从我的其余 htaccess 规则中排除目录
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting