htaccess mod_rewrite проблема доступа к css / js / images - PullRequest
1 голос
/ 08 февраля 2011

Я использую apache mod_rewrite, htaccess.

Я нахожу способ получить доступ к файлу images / css / js без записи полного URL-пути в html / pages с какого-либо сайта (я забыл сайт).

Итак, я пишу в htaccess:

RewriteRule images/(.+)?$ images/$1 [NC,L]     # it take images from images folder
RewriteRule js/(.+)?$ js/$1 [NC,L]             # it take js files from js folder
RewriteRule topnav/(.+)?$ topnav/$1 [NC,L]     # it take js/css from topnav folder
RewriteRule common-style.css common-style.css # it take css from root folder
RewriteRule jquery.js jquery.js    # it take jquery from root folder

Итак, все js, css access.

, но теперь я добавил другое правило

RewriteRule script/js/(.+)?$ script/$1 [NC,L] # it should take js from script/js

это не работает.

Я понимаю, что теперь структура каталогов двухуровневая, то есть script / js /, поэтому она не может разрешить файл в папке "js".но не знаю, как справиться с этим.

Я много пробовал, используя другой шаблон, но не смог.

Еще раз, мой вопрос заключается в доступе:

1) script/js/anyfile.js
2) script/css/anycssfile.css
3) script/blue_theme/Anyimagesfile.jpg
4) script/css/jquery/images/anyimages.jpg

Структура каталогов следующая:

-script
        -js
        -css
           -jquery
                   -images       
        -blue_theme

Кроме того, путь для извлечения этих ресурсов оценивается как .httaccess:

http://localhost/site/Place-an-ad/Cars/Mazda/mazda-y/mazda-y-2/script/js/anyjsfile.js

, но на самом деле,http://localhost/site/script/js/anyjsfile.js

1 Ответ

3 голосов
/ 08 февраля 2011

Ваши шаблоны соответствуют только путям, которые либо заканчиваются данным шаблоном (шаблон заканчивается на $), либо содержат только данный шаблон (нет $). И проблема в том, что шаблон js/(.+)?$ также будет соответствовать script/js/ и т. Д.

Сделайте ваш шаблон более конкретным, указав начало и конец пути, используя ^ и $:

RewriteRule ^images/(.+)?$ images/$1 [NC,L]
RewriteRule ^js/(.+)?$ js/$1 [NC,L]
RewriteRule ^topnav/(.+)?$ topnav/$1 [NC,L]
RewriteRule ^common-style\.css$ common-style.css
RewriteRule ^jquery\.js$ jquery.js

А затем сделайте то же самое с вашим новым правилом:

RewriteRule ^script/js/(.+)?$ script/$1 [NC,L]
...