2011-11-09 2 views
0

Je veux faire une ré-écriture avec les conditions suivantes:.htaccess, mod_rewrite, avec regex annuaire et filetype

  1. Répertoire est/images
  2. fichier
  3. a un .jpg, .png ou .gif l'extension

Je veux rediriger sur les points suivants

/images/?file=filename.extension 

Ce ne fonctionne pas:

RewriteRule /images/(.*\.jpg|png|gif) /images/?file=$1 

Exemple:

/images/example.jpg =>/images/?file=example.jpg

Merci

+0

http://www.rubular.com ou http://gskinner.com/RegExr/ ou ..., testez toujours votre regex – malletjo

+0

Je viens de le vérifier dans Rubular et il dit échapper à la barre oblique mais cela n'a pas aidé le match et la capture sont corrects. – Enkay

Répondre

0

Je pense que vous avez besoin parens pour regrouper les extensions.

/images/(.*\.(jpg|png|gif)) 
+0

Enkay, pouvez-vous activer la journalisation? http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog –

+0

Il reste vide ... pas sûr qu'il soit correctement configuré. – Enkay

+0

Pouvez-vous publier votre fichier .htaccess ici? –

0

Dans le fichier .htaccess, le chemin est dépouillé de la barre oblique de sorte que vous devez commencer par un images/ au lieu de /images/. En outre, vous pouvez commencer par ^ pour correspondre au début du chemin afin que les chemins comme /blahblah/images/something.gif ne soient pas réécrits. Enfin, votre paren correspondra foo.jpg mais pas foo.png ou foo.gif. Essayez ceci:

RewriteRule ^images/(.+\.(jpg|png|gif)) /images/?file=$1 
+0

La barre oblique est supprimée dans le contexte Directory ou htaccess, et non dans le contexte VirtualHost. – malletjo

+0

Est-ce que ce fichier .htaccess dans votre document vous racine dans le répertoire "images"? En fait, vérifiez ma modification, supprimé barre oblique dans la cible. –

+0

Le fichier .htaccess dans la racine du document. Le répertoire images est un ensemble Alias ​​dans virtualhost. Est-ce important? – Enkay