从mod_rewrite规则中排除图像

时间:2012-09-26 16:39:29

标签: .htaccess mod-rewrite

我的htaccess脚本无意中更改了图片网址,因此其网址路径中包含“portfolio /”的图片会受到不利影响。

有没有办法从该特定规则中排除图片?

redirect 301 "/sitemap.xml" http://www.example.com/sitemap.php

RewriteEngine On

RewriteCond %{REQUEST_URI} !portfolio/project
RewriteCond %{REQUEST_URI} /.*portfolio/.*$ [NC]
RewriteRule ^(.*)portfolio(.*)$ /$1portfolio/project$2 [R=301,L]

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/sitemap.php
RewriteRule ^(.*)$ /index.php/$1 [L]

2 个答案:

答案 0 :(得分:7)

对于第一部分(第一次重写规则),请尝试

RewriteCond %{REQUEST_URI} !portfolio/project
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_URI} /.*portfolio/.*$ [NC]
RewriteRule ^(.*)portfolio(.*)$ /$1portfolio/project$2 [R=301,L]

我不确定你为什么在第二次重写中使用RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]

RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png)$ [NC]表示您不希望将投资组合更改为投资组合/项目,以获取以某些允许的图像扩展名结尾的网址。 [NC](不区分大小写)用于跳过JPG,GIF,PnG等扩展

答案 1 :(得分:3)

如果您的目标是完全从重写规则中排除图片,请考虑添加以下行作为您的第一条规则:

 RewriteRule ^.*\.(gif|jpe?g|png)$ - [L]

它只是阻止规则引擎继续前进,并且如果匹配上述模式,则不会重写URL。