我在我的htaccees中使用它来根据cookie值改变img路径:
<IfModule mod_rewrite.c>
# check for client cookie
RewriteCond %{HTTP_COOKIE} (?:^|;\s*)client=([^;]*)
# check if an image was requested
RewriteCond %{REQUEST_FILENAME} \.(jpe?g|gif|bmp|png)$
# exclude these folders
RewriteCond %{REQUEST_URI} !some/members/logos
# grab everything before the variable folder and everything afterwards
# replace this with first bracket/cookie_value/second bracket
RewriteRule (^.+)/VARIABLE/(.+)$ $1/%1/$2 [L]
</IfModule>
图片链接如下:
<img src="http://www.some.com/images/VARIABLE/img/1.jpg" alt="" />
我很高兴我做到这一点,但问题是......它不起作用。我不知道为什么?任何人都能解释一下吗?
谢谢!
HALFWAY:
我得到了这个工作:
RewriteRule ^(.+)/VARIABLE/(.+)$ $1/SET_VALUE/$2 [L]
用set_value替换我的变量。但是,只要我添加一个条件,整个过程就会失败并且无法显示任何图像。例如,这应该给我cookie值,我想输入而不是SET_VALUE:
RewriteCond %{HTTP_COOKIE} (?:^|;\s*)client=([^;]*) [NC]
答案 0 :(得分:0)
我假设问题是您最终使用/images/jpg/1.jpg
或/images//1.jpg
这样的路径?
您使用%1
作为Cookie值的反向引用,但反向引用应该引用“最后匹配的RewriteCond”,并且在您想要的后面引用其他人(包括一个分组)比赛。尝试将cookie移动到最后。
此外,您在该Cookie中有两个分组,但您使用的是%1
,最终会引用(?:^|;\s*)
而不是([^;]*)
,这会给您带来错误的结果。
如果这不是您的问题,您能详细说明网址的输出方式吗?它根本没有被重写,还是被错误地重写了?
答案 1 :(得分:0)
解决方案:(经过多次干预和@LazyOne的大量帮助!):
<IfModule mod_rewrite.c>
# exclude these folders
RewriteCond %{REQUEST_URI} !/some/members/logos
# check for client cookie
RewriteCond %{HTTP_COOKIE} client=([^;]*) [NC]
# replace variable with cookie value
RewriteRule ^(.+)/variabel/(.+\.(jpe?g|gif|bmp|png))$ $1/%1/$2 [L]
</IfModule>
棘手的部分,需要永远解决的是确保你的cookie有一个尾随的分号...我的cookie设置如下:
document.cookie = "client=value"
哪个不起作用。将其更改为:
document.cookie = "client=value;"
让它发挥作用。也许对某些人有帮助。