2013-01-01 34 views
0

我讀到了,最好將我的文件命名爲「test.v01.css」而不是「test.css?v = 01」,因爲某些代理忽略了CGI-參數部分。在Apache中實現文件名版本的最佳方式

問題是:

什麼是最簡單的方法呢? (對於所有以「.js」結尾的文件)&「.css」)

我正在使用PHP & Apache。

回答

2

的.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" /> 
+0

感謝恩d-to-end解決方案! – gilmad

相關問題