我正在努力解决涉及.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文件名。
非常感谢任何帮助。
答案 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