我正在尝试在安装 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 标头。
所以主要问题是:
- 我怎样才能使这项工作?
- 为什么它不能按原样工作?为什么我需要排除 /admin 目录?