0
我讀到了,最好將我的文件命名爲「test.v01.css」而不是「test.css?v = 01」,因爲某些代理忽略了CGI-參數部分。在Apache中實現文件名版本的最佳方式
問題是:
什麼是最簡單的方法呢? (對於所有以「.js」結尾的文件)&「.css」)
我正在使用PHP & Apache。
我讀到了,最好將我的文件命名爲「test.v01.css」而不是「test.css?v = 01」,因爲某些代理忽略了CGI-參數部分。在Apache中實現文件名版本的最佳方式
問題是:
什麼是最簡單的方法呢? (對於所有以「.js」結尾的文件)&「.css」)
我正在使用PHP & Apache。
的.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s # Make the file doesn't actually exist
RewriteRule ^(.*)\.[\d]+\.(css|js)$ $1.$2 [L] # Strip out the version number
PHP:
function versioning($file)
{
if(strpos($file, '/') !== 0 || !file_exists($_SERVER['DOCUMENT_ROOT'] . $file))
return $file;
$mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . $file);
return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file);
}
用法:
<link rel="stylesheet" href="<?=versioning('/stylesheet/base.css')?>" type="text/css" />
結果:
<link rel="stylesheet" href="/stylesheet/base.94857365432.css" type="text/css" />
感謝恩d-to-end解決方案! – gilmad