je n arrive pas a masquer les variables dans mon url

WRInaute discret
bonjour a tous
j ai suivi cet exemple https://www.webrankinfo.com/dossiers/techniques/tutoriel-url-rewriting
pour masquer mes variables
mais il n y a rien qui se produit
pourtant le .htaccess est a al racine du répertoire
dans lequel il y a un sous répertoire articles
avec un fichier qui possède le lien vers la page page article.php
mon url reste inchangée

voici ce que j ai fait
j ai donc
mon lien qui envois vers la page article avec un id et une rubrique
<a href="article.php?id=<?php echo $id;?>&rubrique=<?php echo $rubrique;?>" >vers votre page</a>

ensuite le fichier
.htaccess

#--------------------------------------------------
# Répertoire : /articles/
#--------------------------------------------------

# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on

#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------

# Article sans numéro de page :
RewriteRule ^article-([0-9]+)-([0-9]+).html$ /articles/article.php?id=$1&rubrique=$2 [L]

# Article avec numéro de page :
#RewriteRule ^article-([0-9]+)-([0-9]+)-([0-9]+).html /articles/article.php?id=$1&page=$2&rubrique=$3 [L]
 
WRInaute discret
j ai beau le lire et le relire encore et encore
et faire mille essais rien ne fonctionne
j ai même essayer en mettant les chemins absolu partout

car ce que je veux avoir c est bien ca
article-([0-9]+)-([0-9]+)


et ce que j ai c est ca

article.php?id=$1&rubrique=$2

et mon url pour afficher la page article
est
<a href="article.php?id=<?php echo $id;?>&rubrique=<?php echo $rubrique;?>" >vers votre page</a>
 
Dernière édition:
WRInaute discret
ce point 4 dit :
"En effet, les règles de réécriture du fichier .htaccess ne suffisent pas à ce que tout votre site soit au nouveau format, avec des URL propres ! C’est à vous de changer la façon d’écrire les liens"
 
WRInaute discret
merci pour ce morceau de paragraphe je suis tout a fait d accord
qu il faut refaire les liens

mais dans mon cas j ai un utilisateur qui rentre 2 variables dans une page test.php
et qu il envoie via un lien herf vers la page detail.php


et que la page detail.php récupère les deux variables
 
WRInaute discret
merci pour la reponse

donc la ligne complete comme ceci alors
<a href="article-([0-9]+)-([0-9]+)" >vers votre page</a> $ <a href="article.php?id=$1&rubrique=$2>vers votre page</a> [L]
 
WRInaute discret
le mieux pour commencer est de reproduire strictement l'exemple donné, sans rien changer. une fois que cela fonctionnera, il restera à procéder aux ajustements pour pointer vers article.php?id=$1&rubrique=$2
 
WRInaute discret
merci pour l aide
mais bon je ne comprends pas déjà l exemple
tout ce que je remarque c est que l on a changer une url
mis a part cela ...
j avoue que le départ n est pas clair
on doit créer une page qui s appelle comment ?
enfin soit
je vais abandonner
 
WRInaute discret
"Ainsi, une page qui était accessible à l’adresse :

https://www.notre-site.com/articles/article.php?id=12&page=2&rubrique=5

sera accessible après URL rewriting à l’adresse (par exemple) :

https://www.notre-site.com/articles/article-12-2-5.html"

donc faire marcher cela sur votre site. renter
https://www.votre-site.com/articles/article-12-2-5.html
dans la barre d'adresse du navigateur et avoir le même résultat qu'en rentrant
https://www.notre-site.com/articles/article.php?id=12&page=2&rubrique=5
dans la barre d'adresse du navigateur.
en mettant, pour débuguer :
<?php
phpinfo();
?>
dans le fichier article.php
 
WRInaute discret
voila je vois la configuration de mon serveur je suis censé y découvrir quoi ?svp
chez hostinger le module mod_rewrite
est active de source
d ailleurs ma page index.php est bien redirigée vers mon nom de domaine
donc cette url réécrite fonctionne
donc cela devrait fonctionner

de cette facon cela fonctionne
RewriteRule ^test\.html$ /test.php [L]
 
Dernière édition:
WRInaute discret
bon voila je reviens j ai fait des essais et cela fonctionne

donc que je rentre
https://monsite/article.php?id=100&rubrique=200
ou
https://monsite/article-100-200.html

j ai la bonne réponse dans ma page avec les échos des deux valeurs

bon a présent
je viens de modifier mon url pour la passage des variables de cette façon

echo' <a href="article.php?id='.$id.'&rubrique='.$rubrique.'" >vers votre page</a>'

lorsque je clic sur enter j ai bien l url suivante

https://monsite/article.php?id=100&rubrique=200

mais elle ne se modifie pas automatiquement en

https://monsite/article-100-200.html

j ai donc utiliser ceci dans le fichier htacess

RewriteRule ^article-([0-9]+)-([0-9]+).html$ article.php?id=$1&rubrique=$2 [L]
ou encore ceci

RewriteRule href="article-([0-9]+)-([0-9]+)"$ article.php?id=$1&rubrique=$2 [L]
 
WRInaute discret
j en suis désolé mais j ai beau relire encore et encore
je ne vois pas ce que je fais qui ne fonctionne pas
 
WRInaute discret
"Comment mettre en place l’URL Rewriting
...
Changer tous les liens vers chaque fichier dont l’URL a changé."

echo' <a href="article.php?id='.$id.'&rubrique='.$rubrique.'" >vers votre page</a>'
que contenait cette ligne avant d'avoir changé l'url de destination ?
 
WRInaute discret
comme ceci je pense
echo' <a href="article.php?id=12&rubrique=100'" >vers votre page</a>'

depuis ce matin que je cherche ...
 
WRInaute discret
merci pour l aide
mais dans ma page ou j ai l url
l utilisateur clic sur un lien qui transmet ces variables vers la page article
donc lorsque je clic sur le lien de la page test.html qui pointe vers la page article.php
le lien reste en https://monsite/article.php?id=100&rubrique=200

je souhaiterais que quand l utilisateur clic sur le lien de la page test.html

que l url
https://monsite/article.php?id=100&rubrique=200

passe en
https://monsite/article-100-200.html
de façon automatique

sans oublier que les variables ne sont pas toujours les memes bien sur

car l exemple que tu viens de me montrer j obtiens le même résultat en changeant juste l url
mais je souhaiterais que cela se fasse automatiquement
 
WRInaute discret
dans l url de test.html
il y a le lien qui récupère deux variable et qui sont envoyé en GET vers article.php
 
WRInaute discret
oui absolument sauf que les chiffres ne sont pas connu a l avance
ce sont des variables

car le code de l url est le suivant
et les variables sont le fruit des entrés faites par l utilisateur au debut

echo' <a href="article.php?id='.$id.'&rubrique='.$rubrique.'" >vers votre page</a>'
 
WRInaute discret
merci pour le temps et la patience

lorsque l utilisateur après avoir remplit ces deux variables clic sur
echo ' <a href="article.php?id='.$id.'&rubrique='.$rubrique.'" >vers votre page</a>';

l url affichée
sera
https://monsite/article.php?id=100&rubrique=200

si je modifie cette url en
https://monsite/article-100-200.html

cela fonctionne aussi

mais l utilisateur ne va pas devoir changer lui même d url

il faut que le code
<a href="/article-1000-2000.html">lien 2</a>

soit généré avant le passage dans l url
 
WRInaute discret
quand il clique sur le texte "vers votre page", il est dirigé vers le contenu du champ href. qui décide du contenu du champ href ? oh, c'est le webmaster du site, qui décide de mettre au final en html dans ce champ href article.php?id=100&rubrique=200 ou article-100-200.html
 
WRInaute discret
prenons l exemple que je décide
de choisir article-100-200.html
comment je fais pour remplacer 100 et 200 par des variables ?
car c est bien la le souci

je suis entièrement d accord que dans test.html

je puisse mettre ces deux liens et que quoique l utilisateur choisisse cela va s afficher

puisque les variables sont prédéfinies

mais dans mon cas lors de la construction de la page je ne connais pas encore 100 et 200
cela peux très bien être
1
2
3
4
85
145
7854

c est suivant ce que l utilisateur va choisir comme chiffre pour sa variable

si je connaitrais a avance les chiffres cela serait simple
 
WRInaute discret
et c est la que tout est le problème
dans l url de test.html
je ne connais pas a l avance les valeurs de article et rubrique
cela est compréhensible
puisque mon url est construite de cette façon
echo' <a href="article.php?id='.$id.'&rubrique='.$rubrique.'" >vers votre page</a>'
il est impossible qu elle puissent être de cette façon

<a href="/article.php?id=100&rubrique=200">lien 1</a>

puisque 100 et 200 sont encore inconnues

et seront introduite par l utilisateur lorsqu' il répondra a deux questions dans la page test.html

j aurais très bien pour que cela soit mieux compris écrire ce lien et que ca soit l utilisateur qui me renseigne ces deux valeurs dans la page test.html

echo' <a href="article.php?prenom='.$prenom'&nom='.$nom.'" >vers votre page</a>'
 
WRInaute passionné
C'est pas clair tout ça, mais déjà pourquoi tu ne changes pas ton code en :
PHP:
echo '<a href="/article-' . $id . '-' . $rubrique . '.html'">vers votre page</a>';
 
WRInaute discret
merci pour la reponse
mais il y a une erreur de syntaxe que je ne parviens pas a retrouver dans la ligne de code
 
WRInaute passionné
Une apostrophe en trop :

PHP:
echo '<a href="/article-' . $id . '-' . $rubrique . '.html">vers votre page</a>';
 
WRInaute discret
ah voila super
cela fonctionne en fin c est vraiment vraiment gentil
mais y a un truc qui m échappe

comment ce tour de force est il possible ?

si je comprends bien le principe

ce morceau de code récupère les deux variables
article.php?id=$1&rubrique=$2


qui sont ensuite reecrite
en
^article-([0-9]+)-([0-9]+).html

c est une fameuse gymnastique d esprit
 
WRInaute passionné
C'est plutôt dans l'autre sens, d'abord il récupère à partir de l'URL le ^article-([0-9]+)-([0-9]+).html et si ça colle, il l'interprête comme étant article.php?id=$1&rubrique=$2

^article-([0-9]+)-([0-9]+).html
c'est ce qu'on appelle une expression régulière (reg exp), par exemple ^ signifie qu'il ne doit pas y avoir d'autres caractères avant, les parenthèses c'est pour les ensembles, les crochets pour une énumération ou un intervalle, ici de 0 à 9, + pour dire que la longueur est indéfinie, etc.
Et donc il prend ce qui "match" avec la condition figurant dans les premières parenthèses pour le mettre à la place du $1 et pareil pour les deuxièmes.
Enfin, c'est le module RewriteEngine qui s'occupe de ça.
 
WRInaute discret
un tout tres grand merci pour cette explication rick38
elle est super et enfin j ai compris
il aura fallu du temps
 
Discussions similaires
Haut