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 :

Code : Tout sélectionner

RewriteRule ^([\w\d-]+)\.html$ fichier.php?id=$1 [L]

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 :

Code : Tout sélectionner

RewriteRule ^([\w\d-]+)\.html$ index.php?id=$1 [L]
Mais pas :

Code : Tout sélectionner

RewriteRule ^([\w\d-]+)\.php$ index.php?id=$1 [L]
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
pour:

Code : Tout sélectionner

RewriteRule ^([\w\d-]+)\.html$ index.php?id=$1 [L]
c'est:
http://address/slug-article-1234-exemple.html

et pour:

Code : Tout sélectionner

RewriteRule ^([\w\d-]+)\.php$ index.php?id=$1 [L]
c'est:
http://address/slug-article-1234-exemple.php

logique mais il est parfois bon de le préciser

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 :

Code : Tout sélectionner

RewriteRule ^([\w\d-]+)\.php$ index.php?id=$1 [L]
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 :

Code : Tout sélectionner

RewriteRule ^([\w\d-]+)\.php1$ index.php?id=$1 [L]
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:

Code : Tout sélectionner

RewriteRule ^article-([a-z0-9-]+)$ index.php?id=$1 [L]
pour suivre votre exemple:

Code : Tout sélectionner

RewriteRule ^article-([a-z0-9-]+).php$ index.php?id=$1 [L]
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 :

Code : Tout sélectionner

RewriteRule ^article/([a-z0-9-]+)$ index.php?id=$1 [L]
Cela ressemble à du Regex. Je peux faire ceci ?

Code : Tout sélectionner

RewriteRule ^article/([\w-]+)$ index.php?id=$1 [L]
au lieu de

Code : Tout sélectionner

RewriteRule ^article/([\w\d-]+)$ index.php?id=$1 [L]
\w c'est déjà pour les caractères alpha-numériques ? Pourquoi mettre \d ?