【问题标题】:How do I exclude files using .htaccess conditions如何使用 .htaccess 条件排除文件
【发布时间】:2013-05-30 08:51:32
【问题描述】:

我在我的网站上实现了一个 .htaccess 文件,其中包含所有请求的重写规则。我想添加一个条件,以便在请求某个文件时不应用重写规则。我该如何做到这一点,并且如果需要,我可以在未来添加更多内容。我将在下面粘贴我的代码。

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php?filename=$1 [L,QSA]
</IfModule>

【问题讨论】:

  • 有什么意义?您编写的规则已经通过!-f 条件明确忽略现有文件。我想你想要的已经到位了。

标签: apache .htaccess url url-rewriting


【解决方案1】:

RewriteCond 行告诉 mod_rewrite 何时应用 RewriteRule。

正如@Niels 评论的那样——“RewriteCond %{REQUEST_FILENAME} !-f”行告诉系统如果请求是针对现有文件的,则不要执行您的 RewriteRule。

如果您希望规则普遍执行,即使文件存在,并且只是不重写特定文件,您应该删除该行,并添加更具体的 RewriteCond 行。比如:

RewriteCond %{REQUEST_FILENAME} ="Foo.html"

详情请参阅http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

【讨论】:

  • 我很抱歉。我当时为我编写了 .htaccess,但并不完全确定它是如何工作的。谢谢大家!
  • 我们可以像RewriteCond %{REQUEST_FILENAME} /-"files/"f这样为文件路径添加前缀吗?
猜你喜欢
  • 2013-07-17
  • 2023-04-03
  • 2011-05-04
  • 2011-07-08
  • 2017-03-11
  • 1970-01-01
  • 2012-11-30
  • 2015-12-11
相关资源
最近更新 更多