Aller au contenu

Redirection simple


Sujets conseillés

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 :

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

essayez :

Options +FollowSymlinks

RewriteEngine on

RewriteRule ^(.*) /?ref=$1

Bonne continuation ;)

++

PS:

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

je pense qu'il aurait préferé un

Merci pour ta réponse mais ca ne fonctionne pas, tu as une autre idée ?
Modifié par InTech
Lien vers le commentaire
Partager sur d’autres sites

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

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...

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

La règle suivante fonctionne (testée avec hébergement Windows et Linux) :

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 :

<?php phpinfo(); ?>

Ceci dans un fichier PHP bien entendu...tu dois trouver mod_rewrite dans la rubrique "apache" à la ligne "Loaded Modules".

Lien vers le commentaire
Partager sur d’autres sites

Ok merci ca marche super :)

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Tu n'étais pas loin ;) 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 :

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.

Lien vers le commentaire
Partager sur d’autres sites

Je préviens, je n'y connais encore rien en redirection...mais bon, je vais prendre un risque!!! :P

D'après ce que je connais des Regex (car c'est bien de cela qu'il s'agit??? :unsure: ), 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+

Lien vers le commentaire
Partager sur d’autres sites

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 :

[/]? 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;))

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).

Lien vers le commentaire
Partager sur d’autres sites

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:

A+

Modifié par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...