Règle "ne contient pas le mot xxx" ne fonctionne p

WRInaute occasionnel
Bonjour,

Je ne parviens pas a trouver l'écriture pour une règle simple d'url rewriting :

Le but est que nimporte_quelle_page.html > page1.php?var=nimporte_quelle_page
SAUF "index.html"

donc la premiere étape est facile :
Code:
RewriteRule ^([a-z_]+)\.html$  /page1.php?var=$1

Et c'est pour exclure le index.html que je bute...

comment exclure un mot entier (et non des caracteres uniques comme avec [^index] ?

Merci d'avance pour votre aide,
Robin
 
WRInaute impliqué
Il faut mettre une condition:

Code:
RewriteCond %{REQUEST_FILENAME} !^index.html$
RewriteRule ^([a-z_]+)\.html$  /page1.php?var=$1
 
WRInaute occasionnel
Ok, merci. Je vais tester ca.

Et il n'y a pas du tout de moyen d'inclure directement dans la regle l'exclusion d'un mot ? Sans passer par une condition préliminaire.
 
WRInaute impliqué
comparef a dit:
Ok, merci. Je vais tester ca.

Et il n'y a pas du tout de moyen d'inclure directement dans la regle l'exclusion d'un mot ? Sans passer par une condition préliminaire.

C'est inclus dans la règle, je ne comprend pas ce que tu veux dire.

Une règle, c'est une série de commandes RewriteCond, éventuellement vide, suivie par une commande RewriteRule.
 
Nouveau WRInaute
Vap a dit:
comparef a dit:
Ok, merci. Je vais tester ca.

Et il n'y a pas du tout de moyen d'inclure directement dans la regle l'exclusion d'un mot ? Sans passer par une condition préliminaire.

C'est inclus dans la règle, je ne comprend pas ce que tu veux dire.

Une règle, c'est une série de commandes RewriteCond, éventuellement vide, suivie par une commande RewriteRule.

Il voulait dire exclure un mot directement dans l'expression régulière, sans RewriteCond avant.
M'étant déjà cassé la tête (mais en perl) là dessus, ça m'intéresse aussi.
 
Nouveau WRInaute
Je me permets de déterrer ce sujet car j'ai un pb similaire dont je n'arrive pas à me sortir.

J'ai un site : http://www.trouvea.fr
Je viens de créer un sous-domaine : http://cours-de-maths.trouvea.fr

Je souhaite que chaque fois qu'une adresse contient S54, elle utilise mon sous-domaine, et sinon qu'elle utilise le www. J'ai donc modifié les liens de mon site. Mais certains liens n'ont pas été modifiés du fait de soucis de cache, etc, il existe donc encore des adresses du genre http://www.trouvea.fr/cours-de-maths/S54

J'ai donc voulu faire un htaccess de redirection 301 pour assurer mes arrières. Le but de celui ci :
Si le host est "cours-de-maths.trouvea.fr" et l'URI ne contient pas S54 => redirection 301 vers www.trouvea.fr/URI
Si le host est "www.trouvea.fr" et l'URI contient S54 => redirection 301 vers cours-de-maths.trouvea.fr/URI

Voici ce que j'ai essayé, mais ça ne fonctionne pas :


RewriteCond %{HTTP_HOST} ^cours-de-maths\.trouvea\.fr [NC]
RewriteCond %{REQUEST_URI} !^/(.*)/S54$
RewriteRule ^.* http://www.trouvea.fr%{REQUEST_URI} [R=301,L,QSA]

RewriteCond %{HTTP_HOST} ^www\.trouvea\.fr [NC]
RewriteRule S54([^0-9]) http://cours-de-maths.trouvea.fr%{REQUEST_URI} [R=301,L,QSA]
RewriteCond %{HTTP_HOST} ^www\.trouvea\.fr [NC]
RewriteRule S54$ http://cours-de-maths.trouvea.fr%{REQUEST_URI} [R=301,L,QSA]


Quelqu'un a une idée ?
 
Discussions similaires
Haut