Rewriting avec variable
Résolu
allan
-
minalud Messages postés 99 Statut Membre -
minalud Messages postés 99 Statut Membre -
Bonjour,
j'aimerais réécrire des liens du style:
www.monsite.fr/flyer.php?1=value
en
www.monsite.fr/value.html
Je sais que je dois modifier les regles de rewriting dans mon fichier .htaccess mais je ne sais pas quoi mettre malgré mes recherches...
Merci d'avance!
j'aimerais réécrire des liens du style:
www.monsite.fr/flyer.php?1=value
en
www.monsite.fr/value.html
Je sais que je dois modifier les regles de rewriting dans mon fichier .htaccess mais je ne sais pas quoi mettre malgré mes recherches...
Merci d'avance!
A voir également:
- Rewriting avec variable
- Variable d'environnement temp - Forum Word
- Vérifiez la variable d'environnement TEMP. QUE FAIRE ????? ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp - Forum Microsoft Office
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
11 réponses
Bonjour,
Il vous faudra écrire les liens de votre page tel que vous souhaiteriez qu'ils soient.
Exemple: <a href="www.monsite.fr/mapage.html">Mon Lien</a>
ensuite dans le htaccess essayez ceci:
Cela aura pour effet de rediriger tous les liens se finissant par ".html" vers la page flyer.php et creera la variable "page" contenant le nom de la page demandee
Exemple:
le lien <a href="www.monsite.fr/mapage.html">Mon Lien</a>
sera réécrit et "redirigera" vers la page "flyer.php" avec la variable $_GET['page'] valant "mapage.html"
Ps: les variables ne peuvent pas commencer par un chiffre et encore moins ne contenir que cela, donc "flyer.php?1=value" n'est pas autorisee. (voir: http://www.php.net/manual/fr/language.variables.basics.php )
En esperant avoir eclairer votre lanterne.
Cordialement
+++ Spangenhelm +++
Il vous faudra écrire les liens de votre page tel que vous souhaiteriez qu'ils soient.
Exemple: <a href="www.monsite.fr/mapage.html">Mon Lien</a>
ensuite dans le htaccess essayez ceci:
# Le module de reecriture doit etre activer dans apache !
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.+\.html)$ www.monsite.fr/flyer.php?page=$1
# Peut servir a la redirection des erreurs
ErrorDocument 403 www.monsite.fr/index.php?page=403
ErrorDocument 404 www.monsite.fr/index.php?page=404
ErrorDocument 500 www.monsite.fr/index.php?page=500
</IfModule>
Cela aura pour effet de rediriger tous les liens se finissant par ".html" vers la page flyer.php et creera la variable "page" contenant le nom de la page demandee
Exemple:
le lien <a href="www.monsite.fr/mapage.html">Mon Lien</a>
sera réécrit et "redirigera" vers la page "flyer.php" avec la variable $_GET['page'] valant "mapage.html"
Ps: les variables ne peuvent pas commencer par un chiffre et encore moins ne contenir que cela, donc "flyer.php?1=value" n'est pas autorisee. (voir: http://www.php.net/manual/fr/language.variables.basics.php )
En esperant avoir eclairer votre lanterne.
Cordialement
+++ Spangenhelm +++
Le bout de code donné (et donc adapté) ne fonctionne pas.
Pour être plus précis donc dans ma requête:
le lien dans ma page 1 est du type:
<a href="flyer-soirees.html"> Flyer de soirées </a>
l'url brute du lien est
www.monsite.fr/flyer.php?valeur=$evenement
Pour être plus précis donc dans ma requête:
le lien dans ma page 1 est du type:
<a href="flyer-soirees.html"> Flyer de soirées </a>
l'url brute du lien est
www.monsite.fr/flyer.php?valeur=$evenement
Re, le lien est ok juste un petit souci de parentheses. Pour le nom de la variable je n'ai pas dit que cela ne fonctionnerait pas j'ai juste dit que ce n'etait pas autorisé (dixit la doc et les conventions de nommages php) maintenant si vous me dites que ca marche je vous crois ;-)
Pour le reste je viens de tester avec cette regle:
Ps: qu'est ce que vous appeler votre "url brute" ?
Mieux vaut enlever le signe dollar, cela risque de vous embrouiller et n'a rien a faire la:
www.monsite.fr/flyer.php?valeur=$evenement
www.monsite.fr/flyer.php?valeur=evenement <-ok
Tenez moi au courant
+++ Spangenhelm +++
Pour le reste je viens de tester avec cette regle:
RewriteRule ^(.+\.html)$ /index.php?v=$1 [L]avec
****://localhost/monsite/mi-p.htmlet elle fonctionne. Peut-etre le probleme venait-il du "www", tentez de reecrire le lien vers votre page flyer par rapport a la racine de votre site. Cela donnerait:
RewriteRule ^(.+\.html)$ /flyer.php?page=$1si la page se trouve a la racine.
Ps: qu'est ce que vous appeler votre "url brute" ?
Mieux vaut enlever le signe dollar, cela risque de vous embrouiller et n'a rien a faire la:
www.monsite.fr/flyer.php?valeur=$evenement
www.monsite.fr/flyer.php?valeur=evenement <-ok
Tenez moi au courant
+++ Spangenhelm +++
J'ajoute juste que l'url rewriting doit être activé dans la config du serveur.
Cela se fait dans le fichier httpd.conf
Cela se fait dans le fichier httpd.conf
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en fait le dollar est là car c'est une valeur en PHP que j'insère,
l'url rewriting est bien activé puisqu'il fonctionne pour d'autres pages.
J'essaie la solution de Spangenhelm et je vous tiens au courant,
merci de vos aides en tout cas!
l'url rewriting est bien activé puisqu'il fonctionne pour d'autres pages.
J'essaie la solution de Spangenhelm et je vous tiens au courant,
merci de vos aides en tout cas!
Bonjour,
pour activer l'url rewriting, le module doit être chargé.
ensuite, il faut activer l'option FollowSymLinks
(tu peux faire ça dans un .htaccess)
ensuite, tu actives le moteur de rewriting avec RewriteEngine On
puis, la règle qui pourrait te convenir:
www.monsite.fr/value.html =>
RewriteRule ^/(.*)\.html$ flyer.php?1=$1 [L]
en d'autres termes, dans un .htaccess (en esperant que tu as la directive AllowOverride activée dans la config de base d'apache), tu mets:
###########################
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/(.*)\.html$ flyer.php?1=$1 [L]
#############################
Le [L] à la fin est là pour dire de ne pas vérifier d'autres règles si celle ci match.
J'ai écrit ça un peu à la volée, je ne sais pas si j'ai fait des fautes, mais teste, ça marchera peut etre...
Bonne journée!
pour activer l'url rewriting, le module doit être chargé.
ensuite, il faut activer l'option FollowSymLinks
(tu peux faire ça dans un .htaccess)
ensuite, tu actives le moteur de rewriting avec RewriteEngine On
puis, la règle qui pourrait te convenir:
www.monsite.fr/value.html =>
RewriteRule ^/(.*)\.html$ flyer.php?1=$1 [L]
en d'autres termes, dans un .htaccess (en esperant que tu as la directive AllowOverride activée dans la config de base d'apache), tu mets:
###########################
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/(.*)\.html$ flyer.php?1=$1 [L]
#############################
Le [L] à la fin est là pour dire de ne pas vérifier d'autres règles si celle ci match.
J'ai écrit ça un peu à la volée, je ne sais pas si j'ai fait des fautes, mais teste, ça marchera peut etre...
Bonne journée!
Re,
Pour l'adresse de redirection mieux vaut la mettre en absolu il me semble.
Sinon bien jouer pour l'explication sur "Options +FollowSymLinks", le [L] et le AllowOverride !
Ce qui se conçoit bien s'énonce clairement... mouais enfin sauf en informatique !
Pour l'adresse de redirection mieux vaut la mettre en absolu il me semble.
Sinon bien jouer pour l'explication sur "Options +FollowSymLinks", le [L] et le AllowOverride !
Ce qui se conçoit bien s'énonce clairement... mouais enfin sauf en informatique !
Merci!
dans les mécanismes d'apache, tu peux travailler en absolu ou en relatif.
si tu veux absolument travailler en relatif, il faut rajouter la règle de passthrough à la fin, ce qui donne un truc comme:
RewriteRule ^/(.*)\.html$ flyer.php?1=$1 [L,PT]
ça permet de forcer l'interprétation.
Enfin, j'espère que c'est ça! :)
tout doit être dans la doc d'apache!
dans les mécanismes d'apache, tu peux travailler en absolu ou en relatif.
si tu veux absolument travailler en relatif, il faut rajouter la règle de passthrough à la fin, ce qui donne un truc comme:
RewriteRule ^/(.*)\.html$ flyer.php?1=$1 [L,PT]
ça permet de forcer l'interprétation.
Enfin, j'espère que c'est ça! :)
tout doit être dans la doc d'apache!
De rien, tu peux aussi aller voir ici: https://www.grafikart.fr/tutoriels/url-rewriting-71
+++ Spangenhelm +++
+++ Spangenhelm +++
Merci à tous, je suis presque arrivé à ce que je voulais! il me reste une derniere petite difficulté,
j'arrive à tout renommer correctement mais je voudrais faire une petite modification. Petites précisions auparavant:
j'ai renommé ma page "flyer.php" en "advert.php" ,et ma variable passé en url s'appelle désormais "id" (merci Spangenhelm).
Voici mon code dans htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule advert([a-z]+) advert.php?id=$1
</IfModule>
et dans ma page contenant le lien:
<?php
$produit= Array("depliant","flyer","affiche","cartes de visite");
for($i=0;$i<count($produit);$i++)
echo '<a href="advert'.$produit[$i].'.html">.</a>';
?>
j'aimerais supprimer le "advert" de l'url, afin d'obtenir finalement une URL du type:
produit.html
plutot que
advertproduit.html
j'ai fais quelques essais mais je n'y arrive pas =/
j'arrive à tout renommer correctement mais je voudrais faire une petite modification. Petites précisions auparavant:
j'ai renommé ma page "flyer.php" en "advert.php" ,et ma variable passé en url s'appelle désormais "id" (merci Spangenhelm).
Voici mon code dans htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule advert([a-z]+) advert.php?id=$1
</IfModule>
et dans ma page contenant le lien:
<?php
$produit= Array("depliant","flyer","affiche","cartes de visite");
for($i=0;$i<count($produit);$i++)
echo '<a href="advert'.$produit[$i].'.html">.</a>';
?>
j'aimerais supprimer le "advert" de l'url, afin d'obtenir finalement une URL du type:
produit.html
plutot que
advertproduit.html
j'ai fais quelques essais mais je n'y arrive pas =/
je l'ai déjà fais dans une autre page et cela fonctionne correctement.