Переписать пути CSS / JS - PullRequest
       11

Переписать пути CSS / JS

4 голосов
/ 05 апреля 2010

Таким образом, я переписал мои пути к чему-то вроде: URL/really/nice/paths/, используя правила mod_rewrite как это:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>

Вопрос в том, как я могу переписать пути для файлов js / css / image, чтобы при запросе к ним с относительным путем из URL/really/nice/path/ служил из URL/scripts/, URL/styles/ и URL/images/ папки вместо? Можно ли это сделать без использования RewriteBase?

1 Ответ

11 голосов
/ 05 апреля 2010

Когда URL перезаписываются, клиент не знает об этом. Поэтому, когда клиент просматривает страницу по URL-адресу «example.com/some/url/», а страница ссылается на изображение в «images / image.jpg», клиент ищет изображение в «example.com/some/». url / images / image.jpg "хотя страница на самом деле находится в" example.com/some/other/url/ ". Это проблема, с которой вы сталкиваетесь, верно?

Существует три основных решения этой проблемы:

  1. Используйте абсолютные пути к ресурсам вместо относительных.
  2. Используйте тег <base>, чтобы гарантировать, что клиент знает, что корень, на котором строятся его относительные URL-адреса, отличается от очевидного URL-адреса страницы.
  3. Добавьте новое правило для "some / url / images /" в свои правила перезаписи.

Вариант 1, вероятно, является лучшей идеей, и вы обнаружите, что большинство сайтов, использующих перезапись URL, используют его, включая сам переполнение стека. Вариант 2 не одобряется, но работает и является относительно простым. Вариант 3 труднее всего поддерживать, так как при переопределении новых правил могут возникать исключения при переписывании URL-адресов и особые случаи.

Наиболее приемлемым решением является использование абсолютных URL.

...