【问题标题】:how to prevent htaccess directive from cascading to subdirectories如何防止 htaccess 指令级联到子目录
【发布时间】:2013-09-30 18:43:57
【问题描述】:

我有一个 htaccess 文件,用于对名为 wp-login.php 的文件(由 Wordpress 用于登录)进行密码保护。

htaccess 的外观如下:

ErrorDocument 401 "Authorization Required"
<FilesMatch "wp-login.php">
AuthName "Restricted"
AuthType Basic
AuthUserFile /home/username/.wp-admin
require valid-user
</FilesMatch>

我想在directory xyz 下的文件中设置密码,所以xyz/wp-login.php 应该有密码。

但是,问题是我在xyz/abc/ directory(abc 的子目录)下还有另一个wp-login.php 文件,我确实想要密码保护。但这会在 htaccess 指令中自动发生 - 所以我的问题是如何防止指令级联到子目录?

我知道 Directory 指令带有嵌套的 File 指令,但这似乎仍然会级联密码保护 - 请注意,我确实可以访问我的 httpd.conf 文件,因为我使用的是 VPS 而不是共享主机.

谢谢!

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    而不是 FilesMatch 像这样设置您的 .htaccess:

    SetEnvIfNoCase Request_URI "^/wp-login\.php" AUTH_NEEDED
    
    AuthType Basic
    AuthName "Restricted"
    AuthUserFile /home/username/.wp-admin
    Satisfy    any
    Order      allow,deny
    Allow from all
    Deny from env=AUTH_NEEDED
    

    仅当 URI 为 http://site.com/wp-login.php 而使 http://site.com/xyz/wp-login.php 等免于身份验证时才需要基本身份验证。

    【讨论】:

      【解决方案2】:

      基本上,您在子目录中创建一个新的.htaccess 文件来覆盖根目录。此问题中描述了有关此内容的更多详细信息:

      How to remove .htaccess password protection from a subdirectory

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-13
        • 2017-12-10
        • 2022-01-16
        • 1970-01-01
        相关资源
        最近更新 更多