Images qui changent de répertoire + rewriting "classiqu

WRInaute passionné
Bonjour,

Mes images ont changé de répertoire :

Ancienne url de l'image : site.net/images/200611/20061127-nom-image.jpg
Nouvelle url de l'image : site.net/public/200611/20061127-nom-image.jpg

J'ai fait ça mais ça fait planter mon serveur :
Code:
# Redirection des images
RewriteCond %{QUERY_STRING}  ^/images/([0-9]{6}/[0-9]{8}+-.+)$
RewriteRule ^images$ public/%1? [L,R=301]

J'ai aussi un autre petit problème sur un rewriting d'url plus classique :
Anciennes url : -site.net/index.php?Nom-Categorie ou -site.net/index.php?Nom-Categorie/p2 (ou 3, 4, 5, ...)

Nouvelles url : site.net/category/Nom-Categorie (sans slash final, sinon ça ne marche pas !) ou site.net/category/Nom-Categorie/page/2

J'ai utilisé ce code mais ça me met un slash de trop à la toute fin de l'url (donc ça ne marche pas) et en plus je n'arrive pas à lui faire gérer la pagination ("p2/3/4/5...)
Code:
# Redirection des categories
RewriteCond %{QUERY_STRING}  ^([A-Z][a-z]+.*)$
RewriteRule ^index\.php$ category/%1? [L,R=301]

Pourriez-vous m'aider à débuguer ces deux codes svp :- ?
 
WRInaute accro
Pourquoi pas ceci (non testé) ?
Code:
# Redirection des images 
RedirectPermanent /images http://www.site.net/public/
Jean-Luc
 
WRInaute passionné
Ca marche :) !
En plus c'est plus simple :). mais par contre le fait que ce soit en url absolu ne modifie pas certaines choses :- ?

Et pour la redirection des categories est-ce que tu aurais une idée :- ?
 
WRInaute occasionnel
Pour tes catégories, si j'ai bien compris, ton but c'est de rediriger les visiteur vers la nouvelle URL ?

J'aurai fait ça en PHP avec un bout de code style :
Code:
if(ereg('(.+\.php)(.*)', basename($_SERVER['REQUEST_URI']), $uri)) {	
  if(($uri[1] == 'index.php') && (ereg('.+', $uri[2]))) {
    $new_url = "category/" . $uri[2];
    //Puis redirection vers la nouvelle URL ($new_url) avec l'aide de la fonction header(...)
  }
}
Sinon si tu tien à le faire dans un .htaccess, je te proposerais :
Code:
RewriteCond %{QUERY_STRING}  ^(.+)$
RewriteRule ^index\.php$ /category/%1? [L,R=301]
Mais je suis pas sûr quelle puisse fonctionner correctement dans toutes les situation. Je pense que la solution PHP est plus malléable (je l'utilise personnellement car j'ai besoin de faire des requête dans une base de donnée pour générer la nouvelle URL) et en plus j'ai peur que ton .htaccess parte en boucle infinie.

PS :
Pour le premier problème, une règle comme ça aurait suffit :
Code:
RewriteRule ^/images/([0-9]{6}/[0-9]{8}-.+)$ /public/$1 [L,R=301]
Mais je préfère la solution de jeanluc.
 
WRInaute passionné
Merci pour ton aide magic corp. :).
Malheureusement ça ne marche pas tout à fait car la fin de mes urls changent ("/px" -> "/page/x"), comme ceci par exemple :
-site.net/index.php?Bidule/p2
-> -site.net/category/Bidule/page/2

J'ai aussi des url comme ceci :
- index.php?Bidule/2005/12/p2
Mais là je n'ai plus de pages équivalentes. J'ai donc intérêt à laisser un retour "code 404" pour que les robots prennent petit à petit en compte le fait que ces pages n'existent plus (un peu long mais bon...) je pense, non ?
 
Discussions similaires
Haut