【问题标题】:.htaccess file: is it possible to specify sub-directory location for rules?.htaccess 文件:是否可以为规则指定子目录位置?
【发布时间】:2014-04-16 20:29:04
【问题描述】:

我的旧网站是通过手工编写 HTML 构建的,并且具有目录结构:

public_html
   .htaccess
   index.html
   ...
   content_folder
   docs_folder
      .htaccess
      doc1.html
      doc2.html
      doc3.html
   ...

我的新网站是使用将其网页存储在数据库中的 CMS 构建的,因此没有像上面所示的传统网站目录结构。

上面的public_html/docs_folder/.htaccess文件包含以下规则:

# Only permit access from links coming from my website (e.g.http://www.mydomain.com).
SetEnvIf Referer http://www.mydomain.com internal 
<Files *> 
   order Deny,Allow 
   Deny from all 
   Allow from env=internal 
</Files> 

由于新网站没有目录结构,我想知道是否可以包含上面的public_html/docs_folder/.htaccess规则,它只适用于docs_folder目录中的网页(以及任何子目录中的网页),里面public_html/.htaccess 文件。

是否有 &lt;location&gt; 属性或其他方法可以在 .htaccess 文件中包含规则但将其应用于子目录而不是 .htaccess 文件所在的当前目录?

有人可以举一个使用上述规则的例子吗?

另外,上面使用的&lt;Files *&gt; 是否涵盖所有文件(.html、.pdf、.css 等)?我希望如此。

【问题讨论】:

    标签: html apache .htaccess


    【解决方案1】:

    尝试在根目录的 htaccess 文件中添加这个:

    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^https?://yourdomain\.com [NC]
    RewriteRule ^docs_folder/ - [L,F]
    

    您需要删除 /docs_folder/ 中的 htaccess 文件

    【讨论】:

    • 谢谢,但这条规则看起来不同。你能解释一下它在做什么吗?我想阻止访问public_html/docs_folder 中的任何文件,但源自我网站的链接除外。不知道这有什么帮助。目录比我上面显示的要多得多(这只是一个例子)。
    • @ggkmath 根本不清楚你想要什么,根据你的评论更改了规则
    • 谢谢,你能解释一下每一行的作用吗?
    • @ggkmath 第一行打开重写引擎,第二行是检查引用请求标头是否 not 来自您的站点的条件(请注意,这可以是容易伪造),最后一行匹配对 docs 文件夹的请求并拒绝访问。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2021-08-09
    相关资源
    最近更新 更多