htaccess:在子文件夹中带有http auth的mod_rewrite给出了404

时间:2017-08-02 18:50:33

标签: apache .htaccess mod-rewrite .htpasswd http-auth

我对我正在处理的网站有一个奇怪的问题,它确实让我发疯,虽然它应该只是起作用。

我在domain.nl有一个站点,在domain.nl/cms有一个CMS。 除图像,css等和/ cms文件夹之外的所有请求都被重定向到domain.nl/mesam/mesam.php,根目录中有.htaccess文件。

在/ cms文件夹中,有一个基本的http auth,在该文件夹中有.htaccess和.htpasswd。

domain.nl工作正常,除了domain.nl/cms被重定向到mesam / mesam.php,使/ cms文件夹无法访问。

现在,有两种方法可以获得cms: 1)我删除根文件夹中的.htacces,打破整个网站(除了/ cms) 2)我删除/cms/.htaccess,网站本身一直在工作,domain.nl / cms导致一个不安全的CMS,我当然不想要。

这里有一些内容:

domain.nl/.htaccess:

RewriteEngine On    
RewriteCond %{REQUEST_URI}  !^/cms
RewriteCond %{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.css|\.js|favicon\.ico|\.svg|\.pdf|\.ino)$ [NC]    
RewriteRule (.*)  mesam/mesam.php [L]

domain.nl/cms/.htaccess:

AuthName "CMS"
AuthUserFile <<www_root>>/cms/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
require valid-user

奇怪的是,这个完全相同的设置适用于同一服务器上的另一个站点(domain2.nl),相同的目录结构和相同的htaccess-contents。 谷歌证明是有帮助的,因为它告诉我我使用的设置是正确的(由domain2.nl证明)。

我真的希望有人可以帮助我。我在Apache上运行PHP7,在CPanel(以及一些Linux发行版运行)的共享托管服务器上运行。 domain.nl和domain2.nl的PHP和服务器设置是相同的。

1 个答案:

答案 0 :(得分:0)

尝试以下解决方案:

在授权部分之后添加ErrorDocument 401 "Authorisation Required"

您已替换

AuthName "CMS"
AuthUserFile <<www_root>>/cms/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
require valid-user

使用

AuthName "CMS"
AuthUserFile <<www_root>>/cms/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
require valid-user
ErrorDocument 401 "Authorisation Required"

参考:Solving 404 Errors When Using Htpasswd