8768 sujets

Développement web côté serveur, CMS

Bonsoir.

Je me suis lancé dans la refonte complète de mes urls avec la méthode de l'url rewriting et j'ai un petit souci quand il s'agit de faire des redirections d'anciennes url vers les nouvelles url et notamment quand celles-ci étaient avec conditions.

1er cas : Url rewriting simple sans condition + redirection.

Nouvelle url souhaitée : domaine/en/biography/
Ancienne url : domaine/en/bio/biography.php

J'ai mis le code suivant :
RewriteRule ^(.*)en/bio/biography.php$ domaine/en/biography/$1 [R=301,L]
RewriteRule ^en/biography/$	/en/bio/biography.php [L]


Ca marche mais je sais pas si c'est correct.


2ème cas : url rewriting avec conditions + redirections

Nouvelle url souhaitée : domaine/en/news/
Ancienne url : domaine/en/news/news-archives.php

RewriteRule ^en/news/news-([0-9]+)\.html	/en/news/news-archives.php?year=$1 [L]
RewriteRule ^en/news/$	/en/news/news-archives.php [L]
RewriteRule ^(.*)en/news/news-archives.php$ domaine/en/news/$1 [L]


Là ca marche pour la page principale "news" mais j'ai un bug dans l'url après quand je sélectionne l'année à consulter, ça me donne ça en url : domaine/en/news/?year=2014 alors que je voulais domaine/en/news/news-2014.html

Je comprends pourquoi ça marche pas puisque je demande à pointer en 301 vers la page principale donc il rajoute ma condition à la suite. Logique.
Cependant je ne vois pas trop comment m'y prendre...



Merci d'avance de votre aide.
Modifié par PhilouMinety (12 Aug 2014 - 19:19)
Bon il semble que j'ai trouvé une solution. En tout cas ça marche. J'ai modifié le code comme suit :

Cas n°1 :

RewriteCond %{THE_REQUEST} ^.*/en/bio/biography.php
RewriteRule ^(.*)en/bio/biography.php$ domaine/en/biography/$1 [R=301,L]
RewriteRule ^en/biography/$	/en/bio/biography.php [L]


Cas n°2 :

RewriteCond %{THE_REQUEST} ^.*/en/news/news-archives.php
RewriteRule ^(.*)en/news/news-archives.php$ domaine/en/news/$1 [R=301,L]
RewriteRule ^en/news/$	/en/news/news-archives.php [L]
RewriteRule ^en/news/news-([0-9]+)\.html	/en/news/news-archives.php?year=$1 [L]

La redirection marche et j'ai de nouveau un affichage correct dans l'url des news par années.

Si quelqu'un pouvait juste valider que c'est correct au niveau du code. Merci.
Modifié par PhilouMinety (11 Aug 2014 - 21:32)
Aie. Maintenant ca bloque ailleurs... Smiley fache

Si je mets dans l'url : en/news/news-archives.php?year=2012
Ca me renvoie vers : en/news/?year=2012
Bonsoir.
J'ai résolu mon souci. D'une part en vérifiant les url directement dans la page avec un script php. Et j'ai ensuite revu mes règles url rewriting et les directions.
J'ai solutionné ma page archives en rajoutant un cran dans l'url comme ceci :

RewriteRule ^en/news/archive/([0-9]+)/$	/en/news/news-archives.php?year=$1 [L]


Le script php à l'intérieur de la page s'occupe de vérifier le reste.

A+