【问题标题】:In htaccess, how to apply FilesMatch only to files in website root在 htaccess 中,如何仅将 FilesMatch 应用于网站根目录中的文件
【发布时间】:2019-03-04 06:12:46
【问题描述】:

为了避免访问仍在建设中的特定文件,我将这些行写在网站根目录.htaccess 中。这非常有效:

<FilesMatch "login.php|reset.php|raport.php">
AuthUserFile /home/myaccount/public_html/.htpasswd
AuthType Basic
AuthName "Restricted area"
Require valid-user
</FilesMatch>

之后,我在 /forum 下安装了 phpBB。当我尝试访问其登录页面时...我必须先进行身份验证。

我最大的问题是如何修改 FilesMatch 条件,以便将其应用于网站根目录中的 login.php,但不适用于其他文件夹中的 login.php。

提前谢谢你!

【问题讨论】:

  • 如果您的 FilesMatch 代码位于根文件夹的 htaccess 中,那么这将适用于所有子文件夹,除非您创建单独的 htaccess 文件。您可以通过在要远离父 htaccess 的子文件夹中创建一个 htaccess 文件来解决此问题,其中包含以下内容 RewriteEngine on

标签: apache .htaccess


【解决方案1】:

您可以像这样对URI 使用SetEnvIf 只形成根目录:

SetEnvIf Request_URI "^/?(login|reset|raport)\.php" PASS
AuthUserFile /home/myaccount/public_html/.htpasswd
AuthType Basic
AuthName "Restricted area"
Order Deny,Allow
Deny from all
Satisfy any
Require valid-user
Allow from env=!PASS

所以,在这里形成SetEnvIf Request_URI "^/?(login|reset|raport)\.php,确保URI 仅以login|reset|raport 开头,而不是子目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2015-07-11
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多