涉及查询字符串的mod_rewrite

时间:2009-12-02 17:16:08

标签: mod-rewrite

我正在努力解决涉及.css文件的mod_rewrite问题,这些文件由引用图像的“程序”动态提供。我说“程序”,因为技术堆栈有点模糊,但只是插入你最喜欢的技术[perl | php | java的。

使用以下网址从页面引用CSS文件:

http://server/dir/subdir/file-program?site-id=1234&fname=stylesheet.css

CSS的内容包括以下图像引用:

background-image:url('hello.png'); 
... 
background-image:url('world.png');

浏览器将这些引用解释为/ dir / subdir / * .png。

我想要做的是使用引荐来源网址重写所有这些请求,以便最终看起来像:

http://server/dir/subdir/file-program?site-id=1234&fname=hello.png
http://server/dir/subdir/file-program?site-id=1234&fname=world.png

请注意,site-id是可变的,所以我真的需要引用referrer来获取整个查询字符串。对不起,我把它从原帖中删了。

换句话说:来自... file-program ... *。css的任何图像引用都应该被重写以使用该CSS的URL(包括查询字符串),只需用图像文件名替换css文件名。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我不能做出任何承诺,但请试一试:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s [OR]
RewriteCond %{REQUEST_FILENAME} !-l [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/dir/subdir/(*.)$ /dir/subdir/file-program?fname=$1&referer=%{HTTP_REFERER}
RewriteRule ^/dir/subdir/file-program?fname=(.*?)&referer=(*.)siteid=([0-9]+) /dir/subdir/file-program?fname=$1&siteid=$3