Условия .htaccess и mod_rewrite - PullRequest
0 голосов
/ 06 декабря 2011

Я использую движок кеша для моих скриптов CSS и JS на основе PHP и .htaccess. Итак, в PHP я построил следующую функцию:

function CreateFileFingerprint($RelativePath)
{
    $PathInfo = pathinfo($RelativePath);
    return $PathInfo['dirname'].'/'.$PathInfo['filename'].'.'.filemtime(DATA_BASEPATH.$RelativePath).'.'.$PathInfo['extension'];
}

В то время как в моем .htaccess я использую заголовки срока действия:

FileETag None
Header Unset ETag
ExpiresActive On
ExpiresDefault A2592000
ExpiresByType application/javascript A31536000
ExpiresByType text/css A31536000
ExpiresByType text/javascript A31536000
<FilesMatch "[^\.php]$">
  Header Append Cache-Control "public"
</FilesMatch>

И небольшое правило mod_rewrite:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(css|js)$ $1.$3 [L]

Затем на своей странице PHP я использую следующий код:

echo '<link rel="stylesheet" href="'.self::CreateFileFingerprint('/styles/style-base.css').'" media="all"/>';

Все отлично работает, но теперь я хотел бы реализовать универсальный PHP ErrorDocument для моего сайта, как объяснено здесь . Проблема в том, что мне нужно объединить мое предыдущее правило mod_rewrite с тем, которое предложено в ссылке:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /errors/error.php [L]

Может кто-нибудь помочь мне, пожалуйста? Большое спасибо!

1 Ответ

0 голосов
/ 06 декабря 2011
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . – [S=2]
RewriteRule ^(.+)\.(\d+)\.(css|js)$ $1.$3 [L]
RewriteRule ^.*$ /errors/error.php [L]

удалите отрицание из условий и скажите, чтобы он не пытался сопоставить rewriterules, если это файл или каталог.Думаю, что должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...