2009-11-04 101 views
0

遇到問題重寫Flash文件的名稱:正則表達式重寫文件名

/flash/shell.1257347618.swf(數字是一個不斷變化的時間戳,這個想法是繞過瀏覽器緩存)。

我的.htaccess看起來是這樣的:

#Use mod.rewrite 
RewriteEngine On 

#Cache files which are autoversioned 
ExpiresActive On 
<FilesMatch "\.(swf)$"> 
    ExpiresDefault "access plus 10 years" 
</FilesMatch> 

#Remove autoversion timestamp 
RewriteRule ^(swf)/(.+)\.([0-9]+)\.(swf)$ $1/$2.$4 [L] 

這是傳給我從第三方,它不是正確的匹配,我只是不擅長的正則表達式。有人能幫我嗎?

我用來測試的URL是類似於:

http://dev.somedomain.domain.com/flash/shell.1257347618.swf

而且我已經安裝了.htaccess文件到閃存目錄。

+0

所以你想重寫閃存/ shell.123456 .swf到flash/shell.swf? – RMcLeod 2009-11-04 15:40:29

+0

這是正確的。 – lewsid 2009-11-04 15:48:32

回答

0

無論您的文件夾名和文件名的規則:

RewriteRule ^([^/]+)/([^.]+)\.[0-9]+\.swf$ $1/$2.swf [L] 

somefolder/file.329873.swf轉換成somefolder/file.swf

如果你需要讓文件與像topfolder/somefolder/file.329873.swf子文件夾,並希望將所有文件夾層次結構使用:

RewriteRule ^(.+)/([^.]+)\.[0-9]+\.swf$ $1/$2.swf [L] 

如果你可能有名稱沒有數字部分,使用

RewriteRule ^([^/]+)/([^.]+)(\.[0-9]+)?\.swf$ $1/$2.swf [L] 

決賽回答是在評論中。問題是,是的.htaccess在同一文件夾作爲SWF文件,所以我們需要刪除的文件夾sectio萬年像下面的正則表達式:

RewriteRule ^(.+)\.[0-9]+\.swf$ $1.swf [L] 
+0

謝謝,但仍然沒有骰子。 – lewsid 2009-11-04 15:55:33

+0

我相信你知道你在說什麼,但這仍然不起作用。這裏有一些更多的信息,網址如下所示: http://dev.somesubdomain.somedomain.com/flash/shell.1257347618.swf 我在/ flash /目錄下有.htaccess。 – lewsid 2009-11-04 16:02:53

+0

當我說正則表達式時,我知道我在說什麼,但是。htaccess,在正則表達式語法上可能會有一些變化。現在我看看您的最新評論,也許我們不應該嘗試將文件夾放入重寫規則中。你可以試試'RewriteRule ^(。+)\。[0-9] + \。swf $ $ 1.swf [L]' – 2009-11-04 16:07:01

0

使用閃光燈/但規則假定SWF /,更改爲:

RewriteRule ^(flash)/(.+)\.([0-9]+)\.(swf)$ $1/$2.$4 [L] 
+0

這很有道理,但由於某種原因它仍然不匹配。 – lewsid 2009-11-04 15:50:01

0

如果所有文件都在FOLDERNAME文件夾,並具有擴展瑞士法郎,您可以使用以下命令:

RewriteRule ^folderName/([^.]+)\.\d+\.swf$ folderName/$1.swf [L] 

更新,其中在同一文件夾匹配不同的文件類型:

RewriteRule ^folderName/([^.]+)\.\d+\.(\w+)$ folderName/$1.$2 [L] 
+0

謝謝,但不幸的是在這個文件夾中還有其他文件類型。 – lewsid 2009-11-04 15:50:32

+0

這個例子硬編碼類型爲SWF,這就是爲什麼我使用它。更新以匹配任何擴展 – Amarghosh 2009-11-04 16:30:40