.htaccess与受保护目录冲突(.htpasswd)

时间:2011-03-25 11:57:07

标签: .htaccess webserver .htpasswd

我使用.htaccess文件来重写我的网址以使它们对SEO友好,这很好用。 该文件位于根目录(public_html)中。一个网站也在那里运行。

现在我创建了一个名为'templates'的目录,它是CHMOD到777。 我希望它受到保护,因此无法从外部访问这些文件。

通过directadmin我保护了该文件夹。

现在如果我使用我的浏览器在网站上浏览所有网址仍然是SEO炒作。但是,当我尝试浏览到受保护的目录(模板)时,它会显示我创建的404页面,但将401.shtml显示为标题。如果我查看网址,它也会显示'domain.com/401.shtml /'.

它也没有问我用户名或密码。

现在,如果我删除或只是重命名位于public_html(安排所有SEO友好网址的那个)的htaccess文件(到.htaccess2),网站上的页面不起作用(显然)但现在如果我冲浪到那个/ templates目录,它确实要求我输入用户名和密码,我可以登录并访问这些文件。

这是我在root中使用的htaccess文件:

RewriteEngine On

ErrorDocument 404 /home
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]

RewriteRule ^(.*?)$ $1 [L]

RewriteRule ^(nl|NL|fr|FR|en|EN)/start\.html$ /$1/ [R=301]

RewriteRule ^([^/]*)$ /$1/ [R=301]
RewriteRule ^([^/]*)/$ index.php?page=$1 [L]

RewriteRule ^([^/]*)/([^/]*)$ /$1/$2/ [R=301]
RewriteRule ^([^/]*)/([^/]*)/$ /index.php?page=$1&subpage=$2 [L]

RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /$1/$2/$3/ [R=301]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /index.php?page=$1&subpage=$2&subsubpage=$3 [L]

编辑: 我注意到当我在主htaccess文件中关闭RewriteEngine时它也可以工作(当然除了重写)。有什么想法吗?

1 个答案:

答案 0 :(得分:8)

我在网上发现这似乎有效!

问题是访问受保护的内容会使Apache发送401标头。

我必须将以下内容放在位于受保护目录中的.htaccess文件中。

ErrorDocument 401 "Unauthorized Access"
RewriteEngine off
相关问题