[RESOLU] Rewriting

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Rewriting

Re: Rewriting

par kakou34 » 31 oct. 2018, 13:46

Ahh yes, merci bien mon grand sa fonctionne de partout !

Re: Rewriting

par Saian » 31 oct. 2018, 12:04

Code : Tout sélectionner

RewriteRule ^compte/(\w+)$ index?page=compte&admin=$1 [L]

ou

Code : Tout sélectionner

RewriteRule ^(\w+)/(\w+)$ index?page=$1&admin=$2 [L]

La partie en vert est l'adresse réécrite ou tu injectes les valeurs extraites par le regex en violet, qui s'applique sur l'adresse dans la barre d'adresse, ou plus exactement sur la partie après le / suivant le nom de domaine (en l'occurence compte/client).
Donc si tu veux réécrire compte/client en index?page=compte&admin=client mais que tu écris compte?admin=$2 déjà y a un problème.

Re: Rewriting

par kakou34 » 31 oct. 2018, 11:53

Désoler pour le doublon mais je ne peux rééditer mon message précédant.

J'ai trouver pourquoi mon contenu ne s'afficher pas, j'ai utiliser un '$' au lieu d'un '&' pour séparer mes paramétrés de $_GET...
Une erreur de noob je l'avous.. mais on est tous passés par la :/

En revanche pour la réécriture sa ne fonctionne pas

Pour rappel : je souhaite réécrire mes 2 URLs
• index?page=$1
• index?page=$1&admin=$2 (Qui dans ce cas $1 sera uniquement 'compte')

Voila ce que moi j'ai fait :
RewriteRule ^([a-z-]*)$ index?page=$1 [L]
RewriteRule ^(compte/[a-z-]*)$ compte?admin=$2 [L]

J'arrive constamment sur ma page erreur :(

Re: Rewriting

par kakou34 » 30 oct. 2018, 23:08

Merci de ta réponse.

Alors effectivement j'ai trouver un truc qui cloche.

Quand je vais sur la page 'client' ma variable $admin_site contient : compte?admin=clients
Alors qu'elle est sensé contenir uniquement : clients

EDIT : Bon et bien je pense avoir besoin d'aide. En fait le probléme est que mon $_GET['page'] prend en compte tout ce qui écrit dans l'url.

Dans mon url : index?page=compte&admin=client
mon $_get['page'] devrait contenir uniquement : compte
Hors elle contient : compte?admin=client et du coup une erreur dans mon contenu

Re: Rewriting

par @rthur » 30 oct. 2018, 17:22

Alors il faut que tu décorrèles les 2 fonctionnalités pour trouver à quel niveau ça coince :
1) l'affichage de ta page avec les paramètres sans réécriture
2) la réécriture d'url

Pour le 1), prends deux exemples d'urls finales réelles (=non réécrites) que tu dois avoir en utilisateur normal et en admin.
Exemple (à mettre avec un vrai nom de page) :
- http://www.domaine.fr/index?page=mapage
- http://www.domaine.fr/index?compte?admin=compte/mapage

:arrow: Si tu entres ces urls dans un navigateur, est-ce que ça fonctionne ?
Si ce n'est pas le cas, tu as un problème au niveau de ton code PHP ou des paramètres que tu passes en GET.


Pour le 2), la réécriture d'url, désormais tu sais sur quelles urls réelles tu dois aboutir avec ce que tu as définit précédemment.
:arrow: Tu peux alors tester tes 2 règles du htaccess sur l'outil suivant qui va te dire comment tes règles vont être comprises :
https://htaccess.madewithlove.be

Rewriting

par kakou34 » 30 oct. 2018, 15:54

Bonjour,

Voila, j'ai ma page 'index' à la racine de mon site avec un htaccess à coté.
J'utilise un $_GET['page'] pour mes différentes page donc en gros j'utilise : index?page=mypage.

J'ai fait un rewriting :
RewriteRule ^([a-z-]*)$ index?page=$1 [L]

Sur ma page 'index' il une include qui insére le contenu selon la page visité.
<?php require''.$_SERVER['DOCUMENT_ROOT'].'/contenu/'.$page_site.'.php'; ?>

Pour savoir d'ou sort le $page_site
$page = $_GET['page'];
$page_fichier = 'contenu/'.$page.'.php';
$page_site = (empty($page)) ? 'index' : ((isset($page) AND file_exists($page_fichier)) ? $page : 'erreur');

Sur une page 'compte' j'aimerai y insérer du contenu 'admin' grace au $_GET['admin'].
<?php require''.$_SERVER['DOCUMENT_ROOT'].'/admin/contenu/'.$admin_site.'.php'; ?>

Et pour comprendre le $admin_site
$admin = $_GET['admin'];
$admin_fichier = 'admin/contenu/'.$admin.'.php';
$admin_site = (empty($admin)) ? 'compte' : ((isset($admin) AND file_exists($admin_fichier)) ? $admin : 'erreur');

Admettons que je veuille accéder à une page 'client' depuis cette admin.
Pour accéder à cette page 'logiquement' il faudrait écrire : index?page=compte$admin=client

La réécriture pour l'admin
RewriteRule ^(compte/[a-z-]*)$ compte?admin=$2 [L]

Bref dans tout ce travail j'ai 2 erreurs.

• La 1ére est que le contenu de l'admin ne fonctionne pas. J'arrive toujours sur ma page erreur
• La 2éme est que ma réécriture ne fonctionne pas (celle de l'admin pas la 1ére)
Ou peut-être simplement que c'est lié.

En tout cas j'ai besoin de vous !