受.htaccess和WordPress保护的目录

时间:2012-08-18 19:18:36

标签: wordpress .htaccess authentication .htpasswd

我的public_html目录的根目录下有一个标准的WordPress安装.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我想保护包含AuthType Basic的其他应用程序的目录/管理器,所以我的.htaccess看起来像:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

AuthUserFile .htpasswd
AuthType Basic
AuthName "Admin Area"
Require valid-user

这是我的基本结构:

/.htaccess
/index.php
/manager/.htaccess
/manager/index.php

现在,当我尝试访问/ manager目录时,我从WordPress安装中收到404 Not Found。为什么呢?

2 个答案:

答案 0 :(得分:0)

每当我启用重写和密码保护时,我都会遇到像你一样的somme问题,并将以下两行添加到我的htaccess文件中,总是修复它们,试试看:

ErrorDocument 401 default
ErrorDocument 403 default

修改:

更改此行:

RewriteRule ^(.*)$ index.php [QSA,L]

到此:

RewriteRule ^(.*)$ /manager/index.php [QSA,L]

答案 1 :(得分:0)

您需要更改root中的.htaccess,以便从WordPress使用的重写规则中删除目录/管理器(通过index.php处理所有内容)

所以你需要像这样添加一个新的重写条件;

# BEGIN WordPress

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ - [L]

  RewriteCond %{REQUEST_URI} !^/( manager|manager/.*)$
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>

# END WordPress