Réécriture d'URL
jonathanpatate Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre jonathanpatate
- Inscrit le : 21/09/2014
- Site internet
Je recherche comment faire pour transcrire les URL de l'ancienne version 4.0 de phpboost à celles utilisées maintenant le temps de mettre en place une redirection 301 notemment pour Google. Je suis sur OVH avec le module qui va bien et le .htaccess modifiable.
Beaucoup de liens référencent mon site avec des pages comme cela :
www.monsite.fr/articles/articles.php?id=X&cat=Y
Je viens de passer à la 5.0 et les URL semblent être de deux formes, selon si on active le rewriting ou pas :
1 - www.monsite.fr/articles/CODE_CATEG-NOM_CATEG/CODE_ART_NOM_ART/
2 - www.monsite.fr/articles/?url=/CODE_CATEG-NOM_CATEG/CODE_ART-NOM_ART/
J'ai essayé de faire des redirections moi-même avec des URL "partielles" mais cela ne fonctionne pas :
RewriteRule ^articles/articles.php?id=(*)$ /articles/?url=/$1 [L,QSA]
RewriteRule ^articles/articles.php?id=(*)$ /articles/$1- [L,QSA]
Je me demande si le code est prévu pour pouvoir trouver un article ou une news juste par son numéro sans rien d'autre www.monsite.fr/articles/NUM_ART ?
J'ai regardé du coté de ArticlesDisplayArticlesController.class. Je n'ai pas trouvé de regexp dans ce sens dans les UrlControllerMapper. Une idée ?
Édité par jonathanpatate Le 17/05/2016 à 15h38
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Si ça avait été le cas j t'aurait dit module UrlUpdater (qui est installé automatiquement lors d'une mise à jour 4.1 vers 5.0), mais là il va effectivement falloir faire les redirections à la main.
Et le module article n'acceptent pas les url avec uniquement l'id (il faut obligatoirement le nom réécrit dans l'url).
Ca représente beaucoup de liens à réécrire ?
Tu peux faire un truc du genre (dans la partie htaccess de la configuration avancée) :
Code TEXT :
RedirectPermanent /articles/articles.php?id=X&cat=Y /articles/Y-nomcat/X-nomarticle/
Mais tu dois le faire à la main :s
jonathanpatate Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre jonathanpatate
- Inscrit le : 21/09/2014
- Site internet
jonathanpatate Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre jonathanpatate
- Inscrit le : 21/09/2014
- Site internet
Un Redirect ne fonctionne qu'avec les URL en dur car ne gère pas le test des arguments (QUERY_STRING), il faut passer par des RewriteRule, pas le choix. Voici la seule façon qui marche pour moi :
Code SQL :
SELECT CONCAT_WS('n', CONCAT('RewriteCond %{QUERY_STRING} ^id=',pa.id,'(&cat=.*)*$'), CONCAT('RewriteRule ^articles/articles.php articles/',pac.id,'-',pac.rewrited_name,'/',pa.id,'-',pa.rewrited_title,'/ [R=301]'), CONCAT('RewriteCond %{QUERY_STRING} ^id=',pa.id,'(&cat=.*)*$'), CONCAT('RewriteRule ^articles/print.php articles/print/',pa.id,'-',pa.rewrited_title,'/ [R=301]')) FROM `phpboost_articles` pa, `phpboost_articles_cats` pac WHERE pa.id_category = pac.id;
Ce qui donne 4 lignes par article. Cela fonctionne mais pas trouvé plus efficient.
Code TEXT :
RewriteCond %{QUERY_STRING} ^id=15(&cat=.*)*$ RewriteRule ^articles/articles.php articles/2-reparations-hi-fi-video-etc/15-faq-les-bandes-magnetiques-et-cassettes-audio-ou-video/ [R=301] RewriteCond %{QUERY_STRING} ^id=15(&cat=.*)*$ RewriteRule ^articles/print.php articles/print/15-faq-les-bandes-magnetiques-et-cassettes-audio-ou-video/ [R=301] RewriteCond %{QUERY_STRING} ^id=21(&cat=.*)*$ RewriteRule ^articles/articles.php articles/2-reparations-hi-fi-video-etc/21-ou-trouver-des-pieces-detachees/ [R=301] RewriteCond %{QUERY_STRING} ^id=21(&cat=.*)*$ RewriteRule ^articles/print.php articles/print/21-ou-trouver-des-pieces-detachees/ [R=301]
Édité par jonathanpatate Le 17/05/2016 à 19h48
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
Sujet réglé ?
Du coup je me garde ta solution de côté pour l'inclure automatiquement si possible lors de la migration des prochains modules
jonathanpatate Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre jonathanpatate
- Inscrit le : 21/09/2014
- Site internet
jonathanpatate Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre jonathanpatate
- Inscrit le : 21/09/2014
- Site internet
Mettre des 0 quand on ne connait pas les valeurs.
RewriteCond %{QUERY_STRING} ^id=([0-9]*)(&cat=[0-9]*)*$
RewriteRule ^articles/articles.php articles/0-0/%1-0/ [R=301,L]
RewriteCond %{QUERY_STRING} ^id=([0-9]*)(&cat=[0-9]*)*$
RewriteRule ^articles/print.php articles/print/%1-0/ [R=301,L]
Édité par jonathanpatate Le 18/05/2016 à 21h50
j1.seth Membre non connecté
- Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
- Chef de Projet
- Equipe Développement
jonathanpatate Membre non connecté
Booster Fronde
- Booster Fronde
- Voir le profil du membre jonathanpatate
- Inscrit le : 21/09/2014
- Site internet
Au contraire, ici Google et consorts seront informés d'une redirection permanente de type 301 il mettra ses liens à jours d'ici quelques temps et oubliera les anciens en .phpid=....
Les nouvelles URL des futurs articles ne seront pas concernées puisque toujours données dans la nouvelle syntaxe.
Mais au moins çà permet aux visiteurs d'un forum sur lesquels des liens pointent vers mon site de tomber sur l'article et non pas sur du 404. Même si çà fait faire un navigateur un aller-retour avec le 301. Pas le choix.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie