mod_rewrite但跳过一个目录

时间:2012-06-23 09:18:17

标签: mod-rewrite directory

我试图避免像这样的网址:

图像/

图像/有效-filename.png

图像/无效-filename.png

被重写

我已经检查了其他示例问题,例如.htaccess mod_rewrite on root directory but need it to skip all other directories.htaccess mod_rewrite exemptions以及此https://stackoverflow.com/questions/7209746/can-mod-rewrite-skip-a-folder,但我没有设法达到我所追求的目标。< / p>

这就是我现在所拥有的:

# Enable URL Rewriting
Options -Indexes
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^(scripts|styles|images)(/.*|$) - [L]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/robots.txt
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # This solved the problem
  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  RewriteCond %{REQUEST_URI} !images/.* [NC]
  RewriteRule ^(.*)$ index.php [L,QSA]
</IfModule>

如果我导航到 www.site.com/images / ,我会被重定向到www.site.com

如果我导航到 www.site.com/images/invalid-filename.png ,我会被重定向到www.site.com

www.site.com/images/valid-filename.png 正确加载。

有人可以帮忙解释如何实现上述重写行为吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

尝试添加此RewriteCond:RewriteCond %{REQUEST_URI} !images/.* [NC]
它将检查URI是否以images/开头,如果是,则不符合规则。