2009-12-02 3 views
0

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

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

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

Содержание КСС включают ссылки на изображения, как следующее:

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

Браузер интерпретирует эти ссылки как/реж/подкаталог/*. 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 имя файла.

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

+0

Не может просто исправить файл-программу для создания URL-адресов, как это? –

+0

Доминик, мне жаль, что все было так просто. К сожалению, «файловая программа» не является открытым исходным кодом или что-то, что я контролирую. Он может измениться в будущих версиях продукта, но на данный момент я думаю, что mod_rewrite - это самый быстрый способ его решения. –

ответ

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 
+0

Jordon, Похоже, что я оставил ключевую деталь, и это то, что идентификатор сайта является переменной, поэтому я хотел бы ссылаться на реферер (файл .css), чтобы подобрать строку запроса. –

Смежные вопросы