Version complète: sur le forum Webmaster Hub : Redirection simple
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
ebouilleur
Bonjour,

J'ai une url que je n'arrive pas a réécrire, ou je ne voit pas trop comment faire.

Actuellement dans mon fichier .htaccess j'ai :

CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^inconnu\.html$  /test/test.html [L]


Donc si je tappe l'url domaine.com/inconnu.html je suis rediriger vers domaine.com/test/test.html

Mais ce que je voudrais faire c'est juste avoir a tapper domaine.com/inconnu pour etre rediriger. c'est possible? que dois-je rajouter ou modifier dans mon .htaccess??

PS : ceci n'est que des tests, ce que je souhait au final c'est rediriger une url du type : www.euros-million.eu/?ref=ebouilleur vers www.euros-million.eu/ebouilleur

Merci
Ebouilleur
ludodoludujodu
Je pense qu'il te suffit de mettre
RewriteRule ^inconnu$ /test/test.html [L]
ebouilleur
non ca ne suffit pas, en tout cas, ca ne change rien du tout
InTech
Bonjour,

essayez :

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*) /?ref=$1

Bonne continuation wink.gif

++

PS:
CITATION
non ca ne suffit pas, en tout cas, ca ne change rien du tout

je pense qu'il aurait préferé un
CITATION
Merci pour ta réponse mais ca ne fonctionne pas, tu as une autre idée ?
ebouilleur
Oui c'est exacte, autant pour moi

J'ai testé ce que tu nous a soumis, mais du coup j'obtient une belle erreur 500

CITATION
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster_AT_euros-million.eu and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.


donc merci mais ca ne doit pas etre encore ca...
ebouilleur
Bonjour

je reviens a nouveau vers vous car je n'y arrive pas j'ai essayé plein de chose mais soit rien ne se produit, soit j'ai une erreur 500, auriez vous d'autres idées?

merci
ebouilleur
TheRec
Bonjour,
La règle suivante fonctionne (testée avec hébergement Windows et Linux) :
CODE
Options +FollowSymlinks +Indexes -MultiViews
RewriteEngine On
RewriteRule ^inconnu[/]?$  /test/test.html [L]

L'option "-MultiViews" empêche que Apache recherche un fichier "inconnu*" qui se trouverait dans le même répertoire...

[/]? indique qu'il peut y avoir 0 ou 1 slash à la fin (c'est un comportement courant...c'est celui des répertoire, alors autant le reproduire lorsqu'on veut faire "croire" à un répertoire;))

Si tu es hébergé en mutualisé avec OVH par exemple, tu dois mettre le premier "/" avant "test", ils utilisent un mod_rewrite personnalisé.

Si ça ne fonctionne pas, vérifie que ton mod_rewrite soit bien activé... tu as une explication dans les publications du Hub et tu peux également vérifier ceci en exécutant ce code :
CODE
<?php phpinfo(); ?>

Ceci dans un fichier PHP bien entendu...tu dois trouver mod_rewrite dans la rubrique "apache" à la ligne "Loaded Modules".
ebouilleur
Ok merci ca marche super smile.gif

Après y a t il possibilité de faire quelque chose de générique, avec une variable, pour que ca marche pour tout ce qui peut etre du meme type...

Genre :

RewriteRule ^var[/]?$ /test/var.html [L]

Et donc suivant le mot que l'on a tapper ca va directement chercher dans le repertoire indiquer le bon fichier, pratique si on veut rediriger 50 pages, que l'on n'écrive pas 50 lignes de codes ?

Merci pour vos réponses
Cdlt
Ebouilleur
TheRec
Bonsoir,

Je t'invite à lire cet article dans les publications du Hub...
Il y est décrit exactement ce que tu cherches à faire et même plus, donc bonne lecture.
ebouilleur
je l'avais lu la semaine dernière et mes tests n'avaient pas fonctionné, voila ce que j'avais marqué :

RewriteRule ^([0-9]*[a-b]*)$ /test/$1.html [L]

Mais j'ai pu faire une erreur sur la syntaxe peut etre....
Yves
TheRec
Tu n'étais pas loin wink.gif Simplement lorsque tu définis une classe de caractère (entre parenthèses carrées), cela correspond à un caractère... puis tu l'étends avec un caractère comme * ou + ou même ? , cela signifie toute "suite" de caractères contigus de cette classe (enfin pour * et ? il peut n'y avoir qu'un seul caractère ou même aucun)...

Donc en déclarant deux classes de caractères tu as définit que ceci:
  • La chaîne doit commencer par 0 ou plusieurs caractères allant de 0 à 9 : [0-9]*
  • La chaîne doit ensuite avoir 0 ou une lettre entre a et b : [a-b]*
Alors que tu souhaitais sûrement faire ceci :
CODE
RewriteRule ^([0-9a-z]+)[/]?$ /test/$1.html [L,NC]

Une seule classe (contenue dans un sous-masque...définit par les parenthèses), qui doit avoir au moins 1 caractère ou plus et étant composée uniquement de caractères numériques et de lettres comprises entre a et z.
Le flag "NC" (nocase) indique que la chaîne correspondra même si tu utilises des majuscules dans la chaîne et que tes classes de caractères n’autorisent pas les majuscules.
ebouilleur
Ok
je comprend donc pourquoi ca ne fonctionnait pas,
Juste une dernière petite question, je ne vois pas trop l'utilité du : [/]?


Peut tu m'expliquer?

Merci
Ebouilleur
Bourinho
Je préviens, je n'y connais encore rien en redirection...mais bon, je vais prendre un risque!!! tongue.gif

D'après ce que je connais des Regex (car c'est bien de cela qu'il s'agit??? unsure.gif ), cette proposition risque de te poser des soucis avec des adresses du type "sousdossier/page.php" qui seront redirigées vers "test/sousdossier.html" quelque soit la page page.php...

D'ailleurs, cela m'étonne que cela redirige les adresses du type "page" vers "test/page.html" car il n'y a pas le caractère '/' après page...

Mais bon, si cela marche, c'est bien mais je capte pas pourquoi!!!

A+
TheRec
CITATION(ebouilleur @ mardi 13 juin 2006, 10h15) *
Juste une dernière petite question, je ne vois pas trop l'utilité du : [/]?
Peut tu m'expliquer?

Je l'ai expliqué un peu plus haut :
CITATION(TheRec @ jeudi 8 juin 2006, 13h35) *
[/]? indique qu'il peut y avoir 0 ou 1 slash à la fin (c'est un comportement courant...c'est celui des répertoire, alors autant le reproduire lorsqu'on veut faire "croire" à un répertoire;))


CITATION(Bourinho @ mardi 13 juin 2006, 11h15) *
Mais bon, si cela marche, c'est bien mais je capte pas pourquoi!!!

Simplement parce qu'Apache avant d'effectuer une réécriture, s'occupe de vérifier si l'URL demandée par l'utilisateur pointe vers une répertoire ou un fichier existant ou non... s'il n'en trouve point, il fera la réécriture (ou redirection, suivant le cas... bref l'analyse du .htaccess du répertoire en cours). S'il en trouve un il présentera son contenu... Il y a encore une couche intermédiaire qui est activée par l'option "Multiviews" (qui permet de trouver un fichier en ne mentionnant qu'une partie de son nom dans l'URL, mais ce n'est pas le propos de ce sujet).
Bourinho
En fait, c'est tres clair mais il me semblait avoir lu sur le site du Zero : ? = n'importe qu'elle suite caractere...je viens d'y retourner et en fait ? veut bien dire ce que tu lui fais dire!!! Je sais vraiment pas ce qui s'est passe??? J'ai l'impression de devenir cingle!!! wacko.gif

A+
ebouilleur
Bonjour,

Je voulais vous remercier car cela marche à la perfection.
Pour voir le résultat : euros-million.eu/ebouilleur

Merci
Ebouilleur
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.