2014-01-07 4 views
2

Недавно меня спросили, могу ли я сделать адрес моего друга более удобным для пользователей. В настоящее время его URLs выглядит следующим образом:Доступ к соответствующим файлам CSS/JS с правилом перезаписи htaccess

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 файлов для загрузки с относительным путем? Если да, то что мне нужно сделать?

ответ

5

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

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/изображения лучше использовать абсолютный путь в вашем CSS, JS, файлы изображений, а не относительным. Это означает, что вам нужно убедиться, что путь к этим файлам начинается либо с http://, либо слэш /.

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

<base href="/" /> 

ИЛИ

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

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

+0

Вы радушны, рад, что это сработало. – anubhava

1

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

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

<base href="/site/" /> 

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

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

Я всегда забываю попробовать основные html-решения, такие как 'base'. ха-ха. –

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