4

无意中我的 htaccess 脚本正在更改图像 URL,因此其 URL 路径中带有“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]
4

2 回答 2

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]意味着您不想将投资组合更改为以某些允许的图像扩展名结尾的 URL 的投资组合/项目。[NC](不区分大小写)也用于跳过 JPG、GIF、PnG 等扩展名

于 2012-09-26T17:01:31.090 回答
3

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

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

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

于 2015-03-18T21:05:09.317 回答