【问题标题】:.htaccess file causing 404.htaccess 文件导致 404
【发布时间】: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吗?

标签: php html .htaccess rest


【解决方案1】:

你几乎拥有它,

改变

RewriteCond %{REQUEST_URI} !"/ntransfers/"

RewriteCond %{REQUEST_URI} !^/ntransfers/

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

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

【讨论】:

  • 试过了,还是没有运气。 /public_html/___ 工作正常 /public_html/ntransfers/ 工作正常 /public_html/ntransfers/admin/ 抛出 404
  • 还是没有运气!如果我在子目录 .htaccess 文件中禁用用户身份验证部分,它工作正常,特别是行 Require valid-user
  • 啊... auth 首先运行,这是冲突的。我怀疑如果您检查日志,它实际上是在寻找 401(需要身份验证)页面。快速破解,用 ... 包围您的 auth 部分
  • 还是什么都没有,要进入404页面了。
  • 很奇怪。你能看看我的编辑吗?我有一种感觉,这可能是我没有看到的愚蠢的东西。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多