2009-11-04 6 views
0

de la difficulté à réécrire le nom d'un fichier flash:Regex Rewrite Nom du fichier

/flash/shell.1257347618.swf (les chiffres sont un horodatage changeant, l'idée est de contourner la mise en cache du navigateur).

Mon .htaccess ressemble à ceci:

#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] 

Cela a été passé à moi d'un tiers et il ne correspond pas à bien et je suis tout simplement pas bon à regex. Quelqu'un peut-il m'aider?

L'URL que je teste avec est similaire à:

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

Et j'ai installé le fichier .htaccess dans le répertoire flash.

+0

Alors vous essayez de réécrire Flash/shell.123456 .swf à flash/shell.swf? – RMcLeod

+0

C'est exact. – lewsid

Répondre

0

Quel que soit votre nom de dossier et le nom de la règle:

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

convertira somefolder/file.329873.swf en somefolder/file.swf.

Si vous avez besoin pour permettre aux fichiers des sous-dossiers comme topfolder/somefolder/file.329873.swf et que vous voulez garder toute utilisation de hiérarchie de dossiers:

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

Si vous pouvez avoir des noms sans la partie numérique, utilisez

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

final répondre était dans les commentaires. Le problème était que le .htaccess était dans le même dossier que les fichiers .swf et nous avons dû supprimer le dossier sectio nin le regex comme ce qui suit:

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

Merci, mais toujours pas de dés. – lewsid

+0

Je crois que vous savez de quoi vous parlez, mais cela ne fonctionne toujours pas. Voici quelques informations supplémentaires, l'URL ressemble à ceci: http://dev.somesubdomain.somedomain.com/flash/shell.1257347618.swf Et j'ai le .htaccess dans le répertoire/flash /. – lewsid

+0

Je sais de quoi je parle quand je parle regex mais pour.htaccess, il peut y avoir quelques variations sur la syntaxe regex. maintenant que je regarde votre dernier commentaire, peut-être que nous ne devrions pas essayer de mettre le dossier dans la règle de réécriture. Pouvez-vous essayer 'RewriteRule^(. +) \. [0-9] + \. Swf $ $ 1.swf [L]' –

0

Vous utilisez le flash/mais la règle suppose/swf, modification:

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

Cela a du sens, mais il ne correspond toujours pas pour une raison quelconque. – lewsid

0

Si tous les fichiers sont dans le folderName dossier et ont l'extension .swf, vous pouvez utiliser les éléments suivants:

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

Mise à jour pour correspondre à différents types de fichiers dans le même dossier:

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

Merci, mais malheureusement il y a d'autres types de fichiers dans ce dossier. – lewsid

+0

l'exemple codé en dur le type comme swf, c'est pourquoi je l'ai utilisé. mis à jour pour correspondre à toute extension – Amarghosh