2011-03-25 119 views
3

我使用.htaccess文件来重写我的网址,使它们对SEO更友好,这很好。 此文件位于根目录(public_html)。一个网站也在那里运行。.htaccess与受保护的目录冲突(.htpasswd)

现在我创建了一个名为'templates'的目录,它的CHMOD为777. 我希望它被保护,因此这些文件不能从外部访问。

通过directadmin我保护该文件夹。

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

它不要求我输入用户名或密码。

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

这是我的根使用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] 

编辑: 我注意到,当我打开RewriteEngine叙述关主htaccess文件它的工作太(除了重写当然)。有任何想法吗?

回答

8

我发现这似乎在工作的网络上!

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

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

ErrorDocument 401 "Unauthorized Access" 
RewriteEngine off