【问题标题】:How do you keep .htaccess from being used in a particular directory?如何防止 .htaccess 在特定目录中使用?
【发布时间】:2013-12-21 05:05:48
【问题描述】:

我有一个网站,比如说:http://www.example.com/

我正在使用重写模块,但我有一个子文件夹forum.example.com

我不想.htaccess影响这个目录,我该怎么做?

【问题讨论】:

标签: php .htaccess


【解决方案1】:

如果您的forum.domain.com 指向您建议的子目录(并且您当前的.htaccess 文件位于包含该子目录的目录中,或者位于它上面的某个目录中),那么您所要做的就是添加一个@987654323 @子目录中的文件,内容如下:

RewriteEngine Off

对于指向该目录的任何请求,它将禁用mod_rewrite

【讨论】:

    【解决方案2】:

    在 httpd.conf 中:

    <Directory /relevant/directory>
        AllowOverride None
    </Directory>
    

    请参阅documentation

    【讨论】:

    • 我正在使用 .htaccess 文件,但无法访问 httpd。我如何忽略子域上的“RewriteRule..”?
    • @WEB 我不明白。您想使用 .htaccess 文件...忽略 .htaccess 文件?
    • 是的,我有一个 htaccess 正在中断论坛目录,所以我需要关闭它
    • .htaccess 文件是从站点的最根目录 (/) 通过任何子域或附加域读取和处理的,从目录层次结构向下到有问题的目录。如果您当前在根目录中只有一个 .htaccess,也许您可​​以按照下面的 Paul Dixon 的建议添加一个 RewriteCond,以禁用您对这个目录所做的任何事情(假设该目录是 URI 的一部分)。另一种方法是在感兴趣的目录中添加一个 .htaccess,以某种方式否定或取消更高层 .htaccesses 正在执行的操作。
    【解决方案3】:

    在 RewriteRule 之前使用 RewriteCond 指令可能是最简单的方法

    RewriteCond %{HTTP_HOST} ^www.domain.com$
    

    这样,RewriteRule 只适用于与 RewriteCond 匹配的请求,这要求 HTTP 主机头与 www.domain.com 匹配。 (假设 Apache 2.2;我不确定这种语法是否与以前的版本不同)。

    【讨论】:

    • 这绝对是救命稻草。最佳答案无疑。
    【解决方案4】:

    将子域虚拟主机中的AllowOverride 指令设置为无

    【讨论】:

      【解决方案5】:

      您可以使用RewriteCond 仅在使用特定域名时应用您的规则。

      RewriteCond %{HTTP_HOST} ^www\.domain\.comt$ [nocase]
      RewriteRule foo bar [l]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 2012-08-12
        • 1970-01-01
        相关资源
        最近更新 更多