Page 1 sur 2

réécriture d'url

Publié : 06 juin 2006, 16:10
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

Publié : 06 juin 2006, 17:19
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

Publié : 06 juin 2006, 17:33
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

Publié : 06 juin 2006, 17:40
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

Publié : 07 juin 2006, 16:56
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

Publié : 07 juin 2006, 17:54
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

Publié : 08 juin 2006, 08:53
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

Publié : 08 juin 2006, 14:49
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

Publié : 08 juin 2006, 16:05
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

Publié : 10 juin 2006, 10:33
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

Publié : 10 juin 2006, 11:38
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 ?

Publié : 10 juin 2006, 12:13
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

Publié : 10 juin 2006, 14:31
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

Publié : 11 juin 2006, 11:46
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

Publié : 11 juin 2006, 14:50
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