Une redirection grâce à un .htaccess?

chupastar

Membre expert
Club iGen
10 Décembre 2003
2 268
231
Bonjour à tous!

Je cherche à rediriger une adresse vers une autre sans perdre mon référencement de chez Google. Pour cela j'ai trouvé sur le net un .htaccess qui permettrait cela, mais comme mon cas est un peu différent je préfère poser la question.

Alors je m'explique:

Mon blog actuel sous DotClear à une adresse de ce type:
Bloc de code:
http://www.picsmaker.net/blog/index.php?année/mois/jour/post_id-le-titre-du-billet

Sur WordPress elle est comme celle-ci:

Bloc de code:
http://www.picsmaker.net/blog/année/mois/jour/titre-du-billet

Et l'.htaccess que j'ai trouvé sur le net me donnerait ça:

RewriteRule ^index.php[/]([0-9]+)[/]([0-9]+)[/]([0-9]+)[/][0-9]+-(.+)$ http://picsmaker.net/blog/$1/$2/$3/$4 [R=301,L]

Alors c'est simple, je ne comprend rien à ce code qui est du chinois pour moi.

Je voulais juste savoir si il marchait, j'ai un doute sur le "[/]" après "^index.php", ne devrait-il pas être chez moi un "[?]"

Merci pour votre aide!
 
Bonjour à tous!

Je cherche à rediriger une adresse vers une autre sans perdre mon référencement de chez Google. Pour cela j'ai trouvé sur le net un .htaccess qui permettrait cela, mais comme mon cas est un peu différent je préfère poser la question.

Alors je m'explique:

Mon blog actuel sous DotClear à une adresse de ce type:
Bloc de code:
http://www.picsmaker.net/blog/index.php?année/mois/jour/post_id-le-titre-du-billet

Sur WordPress elle est comme celle-ci:

Bloc de code:
http://www.picsmaker.net/blog/année/mois/jour/titre-du-billet

Et l'.htaccess que j'ai trouvé sur le net me donnerait ça:



Alors c'est simple, je ne comprend rien à ce code qui est du chinois pour moi.

Je voulais juste savoir si il marchait, j'ai un doute sur le "[/]" après "^index.php", ne devrait-il pas être chez moi un "[?]"

Merci pour votre aide!
Bloc de code:
RewriteEngine On
RewriteRule ^index.php?([0-9]{4})/([0-9]{2})/([0-9]{2})/[0-9]+-(.+)$ http://picsmaker.net/blog/$1/$2/$3/$4 [R=301,L]

Ça devrait fonctionner si l'année est à 4 chiffre, le mois à 2 et le jour aussi, sinon il faut modifier ce qu'il y a dans les accolade en (dans l'ordre) : {2,4} puis {1,2} puis {1,2}
dit le dans le si ça ne fonctionne pas :)

Je te conseil de faire un recherche dans Google sur les regexp (ou d'attendre un lien magique de gloup gloup :p), c'est ce qui est utilisé ici et qui peut-être te pose problème.
 
Bloc de code:
RewriteEngine On
RewriteRule ^index.php?([0-9]{4})/([0-9]{2})/([0-9]{2})/[0-9]+-(.+)$ http://picsmaker.net/blog/$1/$2/$3/$4 [R=301,L]

Ça devrait fonctionner si l'année est à 4 chiffre, le mois à 2 et le jour aussi, sinon il faut modifier ce qu'il y a dans les accolade en (dans l'ordre) : {2,4} puis {1,2} puis {1,2}
dit le dans le si ça ne fonctionne pas :)

Je te conseil de faire un recherche dans Google sur les regexp (ou d'attendre un lien magique de gloup gloup :p), c'est ce qui est utilisé ici et qui peut-être te pose problème.

Ok, mon année est à quatres chiffres, mon mois et mon jour à 2, donc c'est impeccable.

Alors pour le [/] ça ne pose pas de problème que ce soit un "?" (et non pas un "/") dans mon adresse?

Edit: j'ai rien dit: j'avais mal lu ton nouveau code...

Donc du coup j'ai une nouvelle question: mettre plusieurs codes dans un même .htaccess ça pose problème?

Merci.


Je n'ai simplement rien compris! Et je ne pense pas que ça réponde exactement à ma recherche (rediriger un lien particulier au sein du site vers un autre liens particulier au sein du nouveau site).

Merci.
 
Je ne veux pas trop dire de bêtise, mais cela ne redirigera vraiment ta page, car l'URL affiché sera celle du premier site.
 
Je ne veux pas trop dire de bêtise, mais cela ne redirigera vraiment ta page, car l'URL affiché sera celle du premier site.
Non parce qu'il précise l'adresse complete (avec http://domain.tld/) au début de la réécriture (je sais aps coment appeler la partie après le second espace :rateau:...) ;)

J'avais fait une erreur : il faut un \ avant le ? après index.php, et il faut préciser que "index.php" n'est pas forcément là* :)
Donc le code devient :
Bloc de code:
RewriteEngine On
RewriteRule ^(?:index.php)?\?([0-9]{4})/([0-9]{2})/([0-9]{2})/[0-9]+-(.+)$ http://picsmaker.net/blog/$1/$2/$3/$4 [R=301,L]

Et tu peux très bien avoir plusieurs RewriteRule (par exemple pour tes pages avec les tags ou les catégories ou les archives ;))


*l'adresse pourrait être http://domain.tld/blog/?aaaa/mm/jj/id-post-title
 
Non parce qu'il précise l'adresse complete (avec http://domain.tld/) au début de la réécriture (je sais aps coment appeler la partie après le second espace :rateau:...) ;)

J'avais fait une erreur : il faut un \ avant le ? après index.php, et il faut préciser que "index.php" n'est pas forcément là* :)
Donc le code devient :
Bloc de code:
RewriteEngine On
RewriteRule ^(?:index.php)?\?([0-9]{4})/([0-9]{2})/([0-9]{2})/[0-9]+-(.+)$ http://picsmaker.net/blog/$1/$2/$3/$4 [R=301,L]

Avec ce nouveau code l'affichage du site ne fonctionne plus...

J'ai ce message affiché:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
 
Avec ce nouveau code l'affichage du site ne fonctionne plus...

J'ai ce message affiché:
peut être qu'on a pas le droit aux parenthèses non capturantes... :nailbiting: désolé.

essaye ça alors :
Bloc de code:
RewriteRule ^(index.php)?\?([0-9]{4})/([0-9]{2})/([0-9]{2})/[0-9]+-(.+)$ http://picsmaker.net/blog/$2/$3/$4/$5 [R=301,L]

:)
 
Bon je vais en profiter car j'ai un problème assez proche...

J'ai plusieurs URL a rediriger:
Bloc de code:
RewriteEngine on

# redirection des sous-domaines
# RewriteCond %{REQUEST_URI} !^/admin
# RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+).([^.]+)$ [NC]
# RewriteCond %1 !^www$ [NC]
# RewriteRule ^(.*)$ /admin/$1

# redirection des sous-domaines
RewriteCond %{HTTP_HOST} admin [OR]
RewriteCond %{HTTP_HOST} dal [OR]
RewriteCond %{HTTP_HOST} concours
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/dal
RewriteCond %{REQUEST_URI} !^/concours
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+).([^.]+)$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /%1/$1

#truc qui marche pas
RewriteCond %{HTTP_HOST} fanzines
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+).([^.]+)$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /admin/$1
Et donc en particulier la dernière que je cherche à activer qui doit cacher l'url admin.domaine.net pour que les utilisateurs ne voient que fanzines.domaine.net

Mais je doit conserver, enfin si c'est possible l'url admin.domaine.net pour l'administration, sinon tant pis pour les admins.

Voila si qqun a une idée :)