我试图避免像这样的网址:
图像/
或
图像/有效-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 正确加载。
有人可以帮忙解释如何实现上述重写行为吗?
非常感谢
答案 0 :(得分:2)
尝试添加此RewriteCond:RewriteCond %{REQUEST_URI} !images/.* [NC]
它将检查URI是否以images/
开头,如果是,则不符合规则。