Page 1 sur 2
Redirection htaccess id=slug vers slug.php
Posté : 04 juil. 2020, 11:10
par fury_fatal
Bonjour,
J'aimerais rediriger :
?id=slug-article-1234-exemple
vers
slug-article-1234-exemple.php
Je n'arrive pas :
Code : Tout sélectionner
RewriteEngine on
RewriteRule ^([-a-z]+)\.php$ ?id=$([-a-z]+) [L]
Il faut aussi que ça soit uniquement sur le dossier, et non les sous-dossiers.
Re: Redirection htaccess id=slug vers slug.php
Posté : 04 juil. 2020, 16:54
par Saian
Salut, en fait la réécriture d'url c'est plutôt le contraire. Dans le code html tu fais des liens comme ça
slug-article-1234-exemple.html, que la réécriture redirige vers le bon fichier php.
Ta règle devarit plutôt ressembler à ça :
Re: Redirection htaccess id=slug vers slug.php
Posté : 04 juil. 2020, 18:21
par fury_fatal
Cela ne marche pas non plus.
C'est peut-etre parce que slug-article-1234-exemple.php n'existe pas encore ?
Par défaut, j'ai que des adresses du genre : index.php?id=slug-article-1234-exemple
J'aimerai supprimer index.php?id= et ajouter .php.
Re: Redirection htaccess id=slug vers slug.php
Posté : 04 juil. 2020, 18:42
par Saian
Il faudrait lire bien attentivement le code proposé pour l'adapter convenablement à ce que tu souhaites faire.
Déjà j'ai mis un .html au lieu d'un .php car pour moi il est plus logique quand on fait une réécriture d'utiliser l'extension html pour une page html.
Et deuxièmement j'ai mit fichier.php et non index.php ne sachant quel était le nom de ton fichier php cible.
As tu arrangé le code comme nécessaire ?
PS : après pour tester c'est pas compliqué, directement dans la barre d'adresse du navigateur, avec bien évidement la bonne adresse et un slug qui existe (et l'extension que tu as choisi ^^) :
http://address/slug-article-1234-exemple.html
PPS : tu pourrais aussi éventuellement avoir un problème de RewriteBase si tu es dans un sous répertoire ou derrière un alias. Tu peux vérifier le log d'accès du serveur web pour voir si tu n'y trouverais pas des informations intéressantes.
Re: Redirection htaccess id=slug vers slug.php
Posté : 05 juil. 2020, 10:13
par two3d
Salut:
Code : Tout sélectionner
RewriteRule ^slug-article-([0-9]+)-exemple$ index.php?id=slug-article-$1-exemple [L]
Re: Redirection htaccess id=slug vers slug.php
Posté : 05 juil. 2020, 11:22
par fury_fatal
Il faudrait lire bien attentivement le code proposé pour l'adapter convenablement à ce que tu souhaites faire.
Déjà j'ai mis un .html au lieu d'un .php car pour moi il est plus logique quand on fait une réécriture d'utiliser l'extension html pour une page html.
Et deuxièmement j'ai mit fichier.php et non index.php ne sachant quel était le nom de ton fichier php cible.
As tu arrangé le code comme nécessaire ?
PS : après pour tester c'est pas compliqué, directement dans la barre d'adresse du navigateur, avec bien évidement la bonne adresse et un slug qui existe (et l'extension que tu as choisi ^^) :
http://address/slug-article-1234-exemple.html
PPS : tu pourrais aussi éventuellement avoir un problème de RewriteBase si tu es dans un sous répertoire ou derrière un alias. Tu peux vérifier le log d'accès du serveur web pour voir si tu n'y trouverais pas des informations intéressantes.
C'est bon, ça marche avec :
Mais pas :
C'est bizarre.
Je préfère obtenir une extension .php, parce que cela me permet de mettre une redirection 301 le jour où je renomme les slugs.
Re: Redirection htaccess id=slug vers slug.php
Posté : 05 juil. 2020, 12:14
par two3d
si ta redirection 301 est en PHP, html ou php, c'est pareil, c'est la base de ton fichier qui sera en mesure d’exécuter du code PHP ou non (ici c'est index.php donc oui)
Perso je met pas d'extension à mes redirection, pour le "style"
mais je rejoins tout à fait la logique de Saian qui en mettant .html reconnait le type de fichier
Re: Redirection htaccess id=slug vers slug.php
Posté : 06 juil. 2020, 20:30
par fury_fatal
Quelqu'un saurait m'expliquer pourquoi cela ne marche pas avec l'extension .php ?
Re: Redirection htaccess id=slug vers slug.php
Posté : 06 juil. 2020, 21:22
par Saian
Y a pas de raison que ça ne marche pas du moment que tu mets bien .php dans la barre d'adresse également, sinon forcément l'expression ne match pas.
Re: Redirection htaccess id=slug vers slug.php
Posté : 07 juil. 2020, 10:15
par two3d
Re: Redirection htaccess id=slug vers slug.php
Posté : 07 juil. 2020, 13:53
par fury_fatal
J'ai peut-être l'explication pour laquelle, cela ne marche pas avec .php :
Tous les fichiers .php dans le même dossier sont devenus innaccessibles. Y compris index.php avec ou sans id. C'est la raison pour laquelle, cela ne marche pas.
Si je fais :
alors ça marche. Mais je n'ai pas envie d'une extension .php1
Re: Redirection htaccess id=slug vers slug.php
Posté : 07 juil. 2020, 14:06
par or 1
index.php répond à ^([\w\d-]+)\.php$ d'où une possible boucle infinie.
avec ^([\w\d-]+-[0-9]+-[\w\d-]+)\.php$ index.php ne répond plus.
Re: Redirection htaccess id=slug vers slug.php
Posté : 07 juil. 2020, 15:10
par two3d
je fais comme ceci pour éviter les confusions; je rajoute un mot avant la suite du lien, ex:
pour suivre votre exemple:
Pour information j'utilise plus l'anti-slash aux points, ça fonctionne quand même et c'est mieux lisible
Re: Redirection htaccess id=slug vers slug.php
Posté : 07 juil. 2020, 15:16
par Saian
Bien vu, index.php répondant au pattern forcément ça posait problème comme souligné par or1. Et effectivement tous les fichiers php que tu pouvais avoir aussi.
Re: Redirection htaccess id=slug vers slug.php
Posté : 07 juil. 2020, 20:02
par fury_fatal
Cela explique pourquoi je ne vois jamais d'extension .php sur un site dynamique, mais uniquement .html ou sans extension.
Merci pour l'astuce RewriteRule ^article-([a-z0-9-]+)$
Je peux aussi faire comme ça :
Cela ressemble à du Regex. Je peux faire ceci ?
au lieu de
\w c'est déjà pour les caractères alpha-numériques ? Pourquoi mettre \d ?