Htaccess-rewrite - 在条件中排除某些文件夹

时间:2013-04-19 09:20:03

标签: .htaccess mod-rewrite

我有一个脚本可以在图像上添加水印。

我想要一个RewriteRule,它将排除文件夹内的图像(拇指和拇指列表)。此文件夹中的含义图像不会标有水印

目前我有这个

RewriteRule ^([^/thumb|^/profilethumb].*\.(gif|jp?g|png))$ watermark.php?image=$1&watermark=watermark.png [NC]

问题是它没有在(拇指)的图像上放置水印,这是正确的但仍然在文件夹(profilethumb)中标记水印。

3 个答案:

答案 0 :(得分:2)

结合条件尝试此规则:

RewriteCond %{REQUEST_URI} !^/(profile)?thumb(/.*)?$ [NC]
RewriteRule ^.*\.(gif|png|jpe?g)$ watermark.php?image=$0&watermark=watermark.png [L,NC]

答案 1 :(得分:1)

也许这就是你所需要的:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI}  !/(thumb|profilethumb) [NC]
RewriteCond %{REQUEST_URI}  !watermark\.php        [NC]
RewriteCond %{REQUEST_URI}  /([^.]+)\.(gif|jpg|jpeg|png) [NC]
RewriteRule .*  /watermark.php?image=%1.%2&watermark=watermark.png [NC,L]

我想在/thumb/profilethumb中只有图像并且从规则中排除这两个目录就足够了。如果还有其他文件,我认为你不希望他们有水印。

答案 2 :(得分:0)

您可以先使用RewriteRule跳过两个目录thumbprofilethumb,这不会替换URL路径,然后使用第二个规则处理所有其他图像< / p>

RewriteRule ^(?:thumb|profilethumb).*\.(?:gif|jpe?g|png)$ - [L,NC]
RewriteRule ^.*\.(?:gif|jpe?g|png)$ watermark.php?image=$0&watermark=watermark.png [L,NC]