réécriture d'url

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

réécriture d'url

Message par guilhem_mdg »

Bonjour,
Je ne sais pas si certains pourront résoudre mon problème mais bon j'essaye quand même:
je souhaite rediriger toutes mes urls (monsite.com/page1.php, page2.php, ...) vers monsite.com/index.php?chemin=page1.php ou page2.php, ...
via une règle de réécriture. Je redirige toutes mes pages sur index.php en passant à l'url le paramètre 'chemin' qui prendra comme valeur le nom de la page (qui n'est pas fixé).
Mais je ne sais pas comment faire...
Pouvez-vous m'aider ?
Merci.
Cordialement.
guilhem.
Edit: Sachant que je peux passer des paramètres dans l'url monsite.com/page1.php comme monsite.com/page1.php?val=ok

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

Salut,

Tu peux faire ça avec l'URL Rewriting.
Ca se passe dans un fichier .htaccess à la racine de ton site (à moins que tu ne sois ton propre hébergeur, dans ce cas tu dois pouvoir mettre ça dans la conf Apache).

Quelque chose du type :

Code : Tout sélectionner

RewriteEngine On
RewriteRule ^page([0-9]*)\.php /index.php?chemin=page$1.php 
Le ([0-9]*) représente n'importe quel nombre, et tu le retrouves dans l'expression de droite sous forme $1. Ainsi par exemple page3.php appelée dans l'adresse fera en fait appel à index.php?chemin=page3.php (tu n'es pas obligé de garder le .php, enfin ça dépend de comment tu gères ensuite)

Aucun souci pour les paramètres supplémentaires, ils seront compris.

Plus d'infos sur l'URL Rewriting :
- Sur WebRankInfo
- Sur Webmaster Hub

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

oui, oui...
Mais page1.php peut être toto.php?var=ok&affiche=true...

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

OK, bah c'est pas grave du tout ça :D

Code : Tout sélectionner

RewriteEngine On
RewriteRule ^index.php - [L]
RewriteRule ^([0-9a-Z]*)\.php /index.php?chemin=$1.php
La ligne du milieu indique que pour index.php, faut pas la réécrire (sinon tu vas tourner en rond)
Et ensuite, n'importequoi.php va sur index.php?chemin=n'importequoi donc n'importequoi.php?params=blabla ira sur index.php?chemin=n'importequoi&params=blabla.

Attention à la sécu : si dans index.php tu regardes le chemin et que tu inclus ce qu'on te donne dans chemin=toto, si un esprit malveillant appelle tonsite.com/index.php?chemin=http://siteduhacker/monscriptmalveillant.php baaah, ça peut faire très mal :wink:

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Code : Tout sélectionner

RewriteEngine On

RewriteRule ^index.php - [L]
RewriteRule	^([0-9a-Z]*)\.php http://localhost/projet1/test/index.php?chemin=$1
Je tape:
http://localhost/projet1/test/kjkjh.php?var=1
Et je tombe sur 500 Internal Server error....

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

Hello,

En local il faut que tu actives le mod_rewrite dans ta conf Apache. Farfouille dans ton httpd.conf, tu dois avoir une ligne commentée du genre

Code : Tout sélectionner

#mod_rewrite
Bon courage !

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Ok merci de ta réponse mais mod_rewrite est bien activée...

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

Argh.
Regarde ta log Apache, alors, en général ça aide à identifier le problème :wink:

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Ok, merci beaucoup pour ta réponse.
J'ai réinstallé Apache et les fichiers de config et ça marche maintenant.
Je te remercie beaucoup.
Cordialement.
Guilhem.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Bonjour,

Je suis confronté à un nouveau problème:

J'ai dans mon .htaccess (situé à /www/boutique/):

Code : Tout sélectionner

RewriteEngine On

RewriteRule ^index.php - [P]
RewriteRule ([a-zA-Z0-9]*) http://www.monsite.com/boutique/index.php
Et j'ai mis dans mon index.php (situé à /www/boutique/):

Code : Tout sélectionner

<?php
$url="http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
$temp=str_replace("http://www.monsite.com/boutique/","http://www.autresite.com/boutique/",$url);
include($temp);
?>
Seulement, quand je tape dans mon navigateur:

Code : Tout sélectionner

http://www.monsite.com/boutique/mavariable
et que j'appuie sur Entrée, il m'affiche dans l'url de mon navigateur:

Code : Tout sélectionner

http://www.monsite.com/boutique/index.php
Et non l'url que je viens de saisir.
Et donc le code mis dans le index.php ne s'exécute pas correctement (le include n'est pas le bon...

Suis-je assez clair ? :lol:

Quelqu'un sait-il d'où cela peut-il venir ?

Si quelqu'un pouvait m'aider cela serait très cool de sa part car je cherche depuis un moment... :cry:

Merci !!!

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Ça me parait exécuter exactement ce qu'il y a dans tes règles (remplacer n'importe quelle requête par un appel à index.php sans paramètre), c'est pas ce que tu veux ? Tu as peut-être oublié de remettre le $1 pour faire passer ta variable ?
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

Normalement il n'y a pas de redirection vers l'URL "logique". C'est bizarre.
Ca fait quoi si tu mets juste echo 'toto'; dans ton index.php ?

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Et bien ça affiche toto mais ce que je voudrais c'est que la page index s'exécute (ce qui est le cas) MAIS que dans l'url il y ait ce que j'ai marqué dans le précédent message...

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Bon pour résumé et faire plus simple:
Quand je tape:

Code : Tout sélectionner

http://www.monsite.com/boutique/mavariable
Je voudrais que:

Code : Tout sélectionner

http://www.monsite.com/boutique/mavariable
S'afiche dans l'url de mon browser
Et non:

Code : Tout sélectionner

http://www.monsite.com/boutique/index.php
Que faut-il modifier à :

Code : Tout sélectionner

RewriteEngine On

RewriteRule ^index.php - [P]
RewriteRule ([a-zA-Z0-9]*) http://www.monsite.com/boutique/index.php
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Cordialement.
Guilhem.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Je crois que tu te méprend sur le mod_rewrite !

Il ne s'agit en aucun cas d'une redirection ou d'une réinscription de l'adresse dans le navigateur. Tout ce que fait le mod_rewrite c'est que quand il reçoit une requête pour http://www.monsite.com/boutique/mavariable il se comporte comme si l'on avait appelé l'adresse http://www.monsite.com/boutique/index.php. Rien de plus :wink:

Ce que tu veux c'est une redirection, qui doit se faire au niveau des entêtes HTTP (Location: http://www.monsite.com/boutique/mavariable) afin que l'utilisateur soit réellement redirigé :wink:

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.4) Gecko/20060508 Firesalamandre Firefox/1.5.0.4
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités