.htaccess文件导致404

时间:2014-11-26 00:11:27

标签: php html .htaccess rest

我的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

2 个答案:

答案 0 :(得分:0)

你几乎拥有它,

变化

RewriteCond %{REQUEST_URI} !"/ntransfers/"

RewriteCond %{REQUEST_URI} !^/ntransfers/

编辑:错过了子目录位,试试这个:

RewriteCond %{REQUEST_URI} !^/ntransfers$
RewriteCond %{REQUEST_URI} !^/ntransfers/.*

答案 1 :(得分:0)

很晚很多年了,但是如果你的文件夹结构是正确的,你在子文件夹中拼错了htaccess:P