exception dans les règles de réécriture

  • Auteur de la discussion Auteur de la discussion Canard
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Grace a l'url rewriting je redirige tous les visiteurs qui accedent a :
www.example.com/dossier_tape_au_hasard/

vers pirate.php

or j'ai un dossier images et j'aimerai qu'il en aient acces en tapant
www.example.com/images <-> et donc ne pas etre redirigé vers pirate.php

je sias qu'il existe des excetions mais je ne sais pa m'en servir quelqu'un aurai t'il un totorial ou un aide à m'aaporter ?
merci beaucoup
 
Olivier Duffez (admin)
Membre du personnel
il suffit de créer une règle spécifique à ton dossier image, de la mettre avant l'autre règle dans ton fichier .htaccess, et d'indiquer [L] à la fin de cette règle (pour dire "Last", pour qu'aucune autre règle ne soit appliquée)
 
Nouveau WRInaute
euh...

en fait j'ai ça


Code:
RewriteRule ^(.*)/$ ./piege.php [L]
RewriteRule ^([^/]+)/(.+)$ ./piege.php [L]


je dois rajouter quoi ? j'ai rien pigé...
 
Nouveau WRInaute
wa super merci... mais j'aimerai bien comprendre ....
pourrai tu m'expliquer cette ligne ?

qu'entends tu par ce serais mieux une condition ? (exemple ?)
 
Nouveau WRInaute
euh non j'ai ça :

Code:
Options +FollowSymlinks
RewriteEngine on 
RewriteCond %{Request_URI} !^.*/images/.*$ 
RewriteRule ^(.*)/$ ./pirate.php 
RewriteRule ^([^/]+)/(.+)$ ./pirate.php

et cela ne marche pas enfin quand je vais dans images -> c'est bon mais quand je vais dans images/xx.jpg cela me renvoi vers pirate.php
 
WRInaute impliqué
C´est normal que ça ne mache pas, la condition ne s´applique que à la première règle...
essaie ça:
Code:
RewriteCond %{Request_URI} !^.*/images/.*$
RewriteRule ^([^/]+)/(.*)$ ./pirate.php
 
WRInaute passionné
correiaj, ^signifie "au début", et $ "à la fin"
donc
Code:
^.*/images/.*$
ça veut dire qu'au début, il doit ABSOLUMENT y avoir euh.. n'importe quoi,
puis quelque part, /images/,
puis à la fin, ABSOLUMENT, euh... n'importe quoi.

Alors ça serait plus simple d'écrire
Code:
.*/images/.*
qui veut dire "la chaîne contient, n'importe où, /images/

;)

De plus,
Code:
^([^/]+)/(.*)$
veut dire
au début, n'importe quoi sauf un slash (au moins une fois) puis un slash, puis n'importe quoi à la fin.
On peut encore une fois se débarasser du $ qui représente un test inutile.

Pourquoi pas
Code:
RewriteCond %{Request_URI} !^.*/images/.*
RewriteRule ^([^/]+)/(.*) ./pirate.php
?
 
Nouveau WRInaute
Code:
RewriteCond %{Request_URI} !^.*/images/.* 
RewriteRule ^([^/]+)/(.*) ./pirate.php

MERCI parfait ! (et doublement merci pour les explications!)
 
WRInaute impliqué
Bon ensuite il faut mettre le drapeau NC et remettre sans les .* devant et derrière images car sinon, tu peut accéder à n´importe quel directorie images:
/images/ mais aussi /../../images et ainsi de suite
 
WRInaute passionné
correiaj a dit:
Bon ensuite il faut mettre le drapeau NC et remettre sans les .* devant et derrière images car sinon, tu peut accéder à n´importe quel directorie images:
/images/ mais aussi /../../images et ainsi de suite
Il faut effectivement enlever le .* avant images, bien vu :oops:

Par contre pas celui d'après.
Et le drapeau NC permettrait d'accéder à /Images/ ou /iMaGeS/ mais je ne pense pas que ça soit souhaité.
 
WRInaute occasionnel
Code:
RewriteRule [^/]$ slash.php

Attention, ca marche pour toutes les requêtes, y compris les images, feuilles de style, etc.
 
WRInaute occasionnel
Ajouter des règles d'arrêt, par exemple
Code:
RewriteRule \.(gif|jpg|css)$ - [L]
RewriteRule [^/]$ slash.php
 
Nouveau WRInaute
hrlp besoin d aide : exception dans les règles de réécriture

je vous explique mon probleme.

nous avons mit un htaccess sur notre site afin d'avoir une redirection permanente 301

j aimerais mettre une exception sur un repertoire de notre site internet pour éviter le message vous avez une redirection en boucle. ( ça ne vient pas de mes cookies..... )

Besoin d aide, j aimerais avoir une exception sur un repertoire type

www.assurancedudoubs.fr/ (repertoire )

voici le code :

RewriteEngine On

# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
# RewriteBase /
SetEnv PHP_VER 5_4

#Options +Indexes

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^assurancedudoubs.fr$
RewriteRule ^(.*) http://www.assurancedudoubs.fr/$1 [QSA,L,R=301]



RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
 
Discussions similaires
Haut