Mod rewrite 涉及查询字符串的mod_重写

Mod rewrite 涉及查询字符串的mod_重写,mod-rewrite,Mod Rewrite,我正在努力解决一个mod_重写问题,该问题涉及由引用图像的“程序”动态提供的.css文件。我说“program”是因为技术堆栈的名称有点模糊,但只需在那里插入您最喜欢的技术[perl | php | java] 使用以下URL从页面引用CSS文件: http://server/dir/subdir/file-program?site-id=1234&fname=stylesheet.css CSS的内容包括如下图像引用: background-image:url('hello.png'

我正在努力解决一个mod_重写问题,该问题涉及由引用图像的“程序”动态提供的.css文件。我说“program”是因为技术堆栈的名称有点模糊,但只需在那里插入您最喜欢的技术[perl | php | java]

使用以下URL从页面引用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

我想做的是使用推荐人的URL重写所有这些请求,使它们看起来像:

http://server/dir/subdir/file-program?site-id=1234&fname=hello.png
http://server/dir/subdir/file-program?site-id=1234&fname=world.png
请注意,站点id是可变的,因此我确实需要引用referer来获取整个查询字符串。对不起,我把这个从原来的帖子里漏掉了

换言之:任何来自…文件程序…*.css的图像引用都应该重写以使用该css的URL(包括查询字符串),只需将图像文件名替换为css文件名即可


任何帮助都将不胜感激。

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

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

你们就不能修改文件程序来生成这样的URL吗?Dominic,我希望能这么简单。不幸的是,“文件程序”不是开源的或我可以控制的东西。它可能会在产品的未来版本中发生变化,但现在我认为mod_rewrite是解决它的最快方法。Jordon,看起来我遗漏了一个关键细节,那就是站点id是可变的,所以我想引用referer(.css文件)来提取查询字符串。