Доступ к относительным файлам CSS / JS с правилом перезаписи htaccess

Недавно меня спросили, могу ли я сделать адрес моего друга более удобным для пользователей. Его текущие URL-адреса выглядят так:

http://wwww.example.com/site/index.php?page=home http://wwww.example.com/site/index.php?page=about/john http://wwww.example.com/site/index.php?page=portfolio/concept-art/2013 

Он хотел бы, чтобы они выглядели так

 http://wwww.example.com/site/home http://wwww.example.com/site/about/john http://wwww.example.com/site/portfolio/concept-art/2013 

которые, как я думал, были бы довольно простыми, поэтому я написал следующую переписку.

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !/(admin|css|fonts|ico|include|js)/ RewriteRule ^([^_]*)$ index.php?page=$1 [L] 

который, похоже, работает для основных

 http://wwww.example.com/site/home 

но что-то вроде этого

 http://wwww.example.com/site/about/john 

ни один из css или js не загрузится. Поэтому я исправил это, сделав все файлы абсолютными путями, но я беспокоюсь, что мой друг собирается добавить новый плагин или что-то еще и забыть, что он должен сделать его абсолютным путем.

Мой вопрос

Есть ли что-то, что я могу изменить или добавить в свой файл htaccess, чтобы загрузить файлы css и js с относительным путем? Если да, то что мне нужно сделать?

Лучше использовать это правило:

 RewriteEngine On RewriteBase /site/ RewriteCond %{REQUEST_FILENAME} !/(admin|css|fonts|ico|include|js)/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+?)/?$ index.php?page=$1 [L,QSA] 

Затем для css / js / images лучше использовать абсолютный путь в ваших css, js, файлах изображений, а не относительном. Это означает, что вы должны убедиться, что путь к этим файлам начинается с http:// или слэш / .

Альтернативно Вы можете попробовать добавить это в заголовок своей страницы:

 <base href="/" /> 

ИЛИ

 <base href="http://domain.com/site/" /> 

Есть ли что-то, что я могу изменить или добавить в свой файл htaccess, чтобы загрузить файлы css и js с относительным путем? Если да, то что мне нужно сделать?

Вы можете просто добавить соответствующую относительную базу URI в свой заголовок страницы:

 <base href="/site/" /> 

Или вы можете перенаправить команду перенаправить их с помощью mod_rewrite (не предпочтительнее):

 RewriteRule ^(.+)/(admin|css|fonts|ico|include|js)/(.*)$ $2/$3 [L]