1

我试图避免这样的网址:

图片/

或者

图像/有效文件名.png

或者

图像/无效文件名.png

从被重写

我已经检查了其他示例问题,例如根目录上的 .htaccess mod_rewrite 但需要它跳过所有其他目录.htaccess mod_rewrite 豁免以及这个https://stackoverflow.com/questions/7209746/can-mod-rewrite-skip -a-folder但我没有设法获得实现我所追求的规则。

这是我现在所拥有的:

# 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正确加载。

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

非常感谢

4

1 回答 1

2

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

于 2012-06-23T10:48:26.780 回答