2

我正在尝试在安装 Wordpress 的根目录的子目录中使用基本的 .htaccess 身份验证。这个问题和这个问题一样。Wordpress 用于永久链接的根 .htaccess 文件与我在需要身份验证的子目录中的 .htaccess 文件不匹配。

但是,该解决方案不起作用,即使它起作用,我也无法使用该解决方案。这是因为 Wordpress 的 htaccess 生成覆盖了我在该部分中放置的任何内容。

它生成的是:

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

我想在 RewriteCond 列表中保留的是

RewriteCond %{REQUEST_URI} !(^/admin(/.*)?$)

导航到http://www.example.com/admin应该使用该目录中的 .htaccess 文件来验证用户。例如:

AuthName "Admin Area" 
AuthType Basic 
AuthUserFile "/home/.htpasswd"
AuthGroupFile "/home/.htgroups"
require valid-user

导航到http://www.example.com/anywhereelse应该重定向到 index.php

事实上,我什至无法让此处显示的 RewriteCond 工作。进入 /admin 目录时它总是只显示 404 页面,除非我require valid-user从 admin .htaccess 文件中删除该行。需要注意的一点是,在该 404 页面上,响应仍然包含 WWW-Authenticate 标头。

所以主要问题是:

  1. 我怎样才能使这项工作?
  2. 为什么它不能按原样工作?为什么我需要排除 /admin 目录?
4

1 回答 1

3

我在这里找到了解决方案。添加

ErrorDocument 401 default

到 Wordpress 编辑部分之外的根 .htaccess 文件似乎已经解决了这个问题。我不确定这是否是最好的选择。如果有更好的解决方案,请随时发布。

于 2012-06-15T19:23:56.623 回答