【发布时间】:2014-11-26 00:11:27
【问题描述】:
我的 public_html 文件夹中有一个 .htaccess 文件,如下所示:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
RewriteCond %{REQUEST_URI} !"/ntransfers/"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
在 /ntransfers/ 中有一个子目录 /admin/。在这个子目录中还有另一个 .htaccess 文件:
Options -Indexes
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /home/devsend/public_html/ntransfers/admin/.htpasswd
Require valid-user
当涉及到重写规则时,我的目标是忽略 /ntransfers/ 及其所有子目录...
RewriteRule ^ index.php [QSA,L]
...我正在使用 slimPHP 进行路由。
我尝试更改 RewriteCond 中的目录,并将 RewriteEngine Off 行放在位于不同子目录级别的各种 .htaccess 文件中。
我可以做些什么来完全忽略 RewriteRule 的目录及其所有子目录?
编辑
我已将我的 .htaccess 更新为以下内容,但仍然没有运气:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
RewriteCond %{REQUEST_URI} !^/ntransfers$
RewriteCond %{REQUEST_URI} !^/ntransfers/.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
编辑 2
如果我按以下方式更改我的子目录 .htaccess 文件,它会起作用...
Options -Indexes
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /home/devsend/public_html/ntransfers/admin/.htpasswd
#Require valid-user
...但是这会禁用身份验证。
编辑 3
进行所有更改后,这两个 .htaccess 文件的外观如下:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ / [R=301,L]
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
RewriteCond %{REQUEST_URI} !^/ntransfers$
RewriteCond %{REQUEST_URI} !^/ntransfers/.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
并且在子目录中:
Options -Indexes
<FilesMatch ".">
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /home/devsend/public_html/ntransfers/admin/.htpasswd
Require valid-user
</FilesMatch>
目录结构:
/www
.htaccess
/ntransfers
/admin
.htacess
【问题讨论】:
-
你在
/home/devsend/public_html/ntransfers/admin/里面还有index.php吗?