Недавно меня спросили, могу ли я сделать адрес моего друга более удобным для пользователей. Его текущие 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]