mod_rewrite, включающий строку запроса - PullRequest
0 голосов
/ 02 декабря 2009

Я борюсь с проблемой mod_rewrite, которая включает в себя файлы .css, которые динамически обслуживаются «программой», которая ссылается на изображения. Я говорю «программа», так как стек технологий немного неясен, но просто вставьте туда свою любимую технологию [perl | php | Джава].

На файл CSS ссылаются со страницы, используя следующий URL:

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

Обратите внимание, что идентификатор сайта является переменной, поэтому мне действительно нужно обратиться к рефереру, чтобы получить всю строку запроса. Извините, я оставил это вне исходного поста.

Иными словами: любые ссылки на изображения, полученные из ... file-program ... *. Css, должны быть переписаны для использования URL (включая строку запроса) этого CSS, просто замените имя файла изображения на файл css имя.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 02 декабря 2009

Я не могу давать никаких обещаний, но сделайте это:

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
...