【问题标题】:Disable a file execution inside a folder .htaccess rule禁用文件夹中的文件执行 .htaccess 规则
【发布时间】:2012-08-10 14:40:58
【问题描述】:

我有一个站点,我想为该文件夹禁用某些文件执行扩展。

例如:www.yoursite.com/cache/test.php

不应执行。

我试过这段代码:

<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh|zip|exe|pl|jsp|asp|htm|sh|cgi|py|php)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>

但这停止了我的网站功能。

我只想将此规则应用到缓存文件夹中,但我无法将 .htaccess 文件放入其中,因为此文件夹会定期清除。

【问题讨论】:

    标签: php .htaccess


    【解决方案1】:

    尝试将此行添加到您的根 .htaccess 文件中:

    RewriteRule ^cache/.*\.(htaccess|htpasswd|ini|phps?|fla|psd|log|sh|zip|exe|pl|jsp|asp|htm|sh|cgi|py)$ - [F]
    

    该标志将导致显示 403 禁止错误

    【讨论】:

    • 这个工作完美。但请确保将其放在 RewriteCond %{REQUEST_FILENAME} !-d 和 RewriteCond %{REQUEST_FILENAME} !-f 之前,否则现有文件仍将被执行
    【解决方案2】:

    您所要做的就是将 .htaccess 文件放在该特定缓存文件夹中。

    .htaccess 文件提供了一种基于每个目录进行配置更改的方法。

    Apache HTTP Server Tutorial: .htaccess files

    将该规则放在您网站根目录的.htaccess 文件中,将在您的整个网站上启用这些规则。


    如果您希望从该缓存文件夹外部启用此规则,您可能想在您的主 .htaccess 文件中尝试此规则 -

    RewriteEngine On
    RewriteRule ^cache/.*\.(htaccess|htpasswd|ini|...)$ /access_denied.php
    

    规则测试查看请求的文件是否为

    • 网址以cache/开头
    • 包含列出的任何文件扩展名(用竖线字符分隔)

    如果这些条件都满足,它会将调用传递给access_denied.php 脚本,您可以在其中显示适当的错误消息。

    【讨论】:

    • 但是当我清理缓存文件夹时,该文件也会被删除,是否有任何其他规则可以禁用此执行
    猜你喜欢
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多