У меня проблема с правилом перезаписи, которое я использую для автоматического управления версиями моих CSS и JS.

У меня есть следующий HTML-код для включения моей таблицы стилей:

<link rel="stylesheet" type="text/css" href="includes/css/index_home.1364215354.css" />

Я использую это в своем .htaccess, чтобы удалить точку и 10 цифр:

RewriteEngine On
RewriteRule ^(.*)\.[\d]{10}\.(css|js)$ $1.$2 [L]

Когда я загружаю сайт, таблица стилей не загружается, даже если я указываю в браузере http : //www.example.com/includes/css/index_home.css Я вижу таблицу стилей.

Метод, который я пытаюсь использовать, я нашел здесь Как заставить браузер перезагружать кешированные файлы CSS / JS?

Я предполагаю, что проблема в RewriteRule, но не знаю почему.

0
Damian 25 Мар 2013 в 17:33

1 ответ

Лучший ответ

RewriteRule пока в порядке. Возможно, проблема в относительном URL и в запросе есть префикс.

В этом случае вы должны быть более конкретными (начинать с includes), а также не привязывать к началу строки запроса. Также перепишите его на абсолютный URL-путь

RewriteRule (includes/.*)\.[\d]{10}\.(css|js)$ /$1.$2 [L]

Если у вас несколько файлов .htaccess, более конкретный (css) переопределяет.htaccess ближе к корневому каталогу. Чтобы объединить эти файлы .htaccess, вы должны использовать RewriteOptions Inherit или RewriteOptions InheritBefore в css файл .htaccess.

1
Olaf Dietsche 25 Мар 2013 в 20:47
Спасибо Олаф. Я пробовал оба метода, но, к сожалению, ни один из них не сработал.
 – 
Damian
25 Мар 2013 в 18:45
Я просмотрел журналы своего сервера и получил следующую ошибку - Файл не существует: /mysite.co.uk/httpdocs/includes/css/index_home.1364215354.css означает, что RewriteRule не работает или это отвлекающий маневр?
 – 
Damian
25 Мар 2013 в 18:48
Я тоже пробовал это, Олаф, и все равно без радости. Я также разговаривал со своим веб-хостингом, и они предположили, что это может быть связано с настройкой моего сервера. У меня в разделе «Поддержка php» выбрано «Приложение FastCGI», а не «Модуль apache». Я не уверен, что это причина проблемы?
 – 
Damian
25 Мар 2013 в 19:31
Вряд ли. Это просто другой способ вызова ваших PHP-скриптов. Поскольку у вас есть доступ к журналам сервера, вы можете увидеть в access.log, что на самом деле запрашивается. Думаю, httpdocs ваш DocumentRoot. Где находится каталог includes?
 – 
Olaf Dietsche
25 Мар 2013 в 19:42
Да, httpdocs - это корень, который находится прямо под ним. Я только что заглянул в журнал access.log и увидел, что запрошенный файл - «GET /includes/css/index_home.1364215354.css HTTP / 1.1».
 – 
Damian
25 Мар 2013 в 19:53