[Redirection 301] index.php?page=var vers var.html

WRInaute discret
Bonsoir,

Voilà, j'ai fait mon url rewriting, tout est OK.

Mon site est récent, mais google a déja indexé des pages non rewrité, (~27).
Je veux que maintenant, il "oublie" les anciennes URL, au profit des nouvelles.

J'ai essayé différentes manières de rediriger index.php?page=$var, vers var.html en 301, mais j'ai pas pu.

J'ai cru savoir qu'il fallait utiliser un query string..
mais je me perds.

PS:
J'ai trois type d'urls rewritées :
index.php?page=var, vers var.html
index.php?page=var&id=id, vers var-id.html
index.php?page=$var&id=id&p=npage, vers var-id-npage.html

Deuxième question,
Je voudrai pouvoir rewrité,
index.php?page=$var&id=id&p=1, vers var-id.html
et même var-id-1.html vers var-id.html.

Merci de votre aide.
Bonne soirée. :)
 
WRInaute accro
Quelques if($var), if($id) et if($p) plus tard, au tout début du code de ton index.php, tu pourras générer aisément un, deux ou trois

Code:
	header("Status: 301 Moved Permanently", false, 301);
	header("Location: http://".$_SERVER['HTTP_HOST']."/");
	exit;

qui te conviendront ;)
 
WRInaute discret
Je vais essayé, merci.

Mais j'aurai aimé le faire par le biais du htaccess, mais c'est pas grave.

Merci quand même.
 
Nouveau WRInaute
ooooops
Code:
RewriteEngine on
RewriteBase /
RewriteRule ^index.php\?page=(.+)&id=(.+)&p=(.+)$ /$1-$2-$3.html [R=301,L]
RewriteRule ^index.php\?page=(.+)&id=(.+)$ /$1-$2.html [R=301,L]
RewriteRule ^index.php\?page=(.+)$ /$1.html [R=301,L]



Et on remercie chaleureusement le moderateur qui supprime des posts avec des infos a l'interieur ... (Celui duquel ce post venait comme correction)
 
WRInaute accro
Superbaloo a dit:
ooooops
Et on remercie chaleureusement le moderateur qui supprime des posts avec des infos a l'interieur ... (Celui duquel ce post venait comme correction)

lol, de la maniere dont le sujet est présenté, tout porte a croire qu'il veut une urlrewriting mais naaann !!! il a deja le rewrite, ce qu'il veut c'est la redirection php maintenant...
 
Nouveau WRInaute
Alors http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

'redirect|R [=code]' (force redirect)

Prefix Substitution with http://thishost[:thisport]/ (which makes the new URL a URI) to force a external redirection. If no code is given, a HTTP response of 302 (MOVED TEMPORARILY) will be returned. If you want to use other response codes, simply specify the appropriate number or use one of the following symbolic names: temp (default), permanent, seeother. Use this for rules to canonicalize the URL and return it to the client - to translate ``/~'' into ``/u/'', or to always append a slash to /u/user, etc.
Note: When you use this flag, make sure that the substitution field is a valid URL! Otherwise, you will be redirecting to an invalid location. Remember that this flag on its own will only prepend http://thishost[:thisport]/ to the URL, and rewriting will continue. Usually, you will want to stop rewriting at this point, and redirect immediately. To stop rewriting, you should add the 'L' flag.

While this is typically used for redirects, any valid status code can be given here. If the status code is outside the redirect range (300-399), then the Substitution string is dropped and rewriting is stopped as if the L flag was used.

c'est bien une redirection que je fais, dans le cas ou ca ne marche pas faire
Code:
RewriteEngine on
RewriteBase /
RewriteRule ^index.php\?page=(.+)&id=(.+)&p=(.+)$ http://example.com/$1-$2-$3.html [R=301,L]
RewriteRule ^index.php\?page=(.+)&id=(.+)$ http://example.com/$1-$2.html [R=301,L]
RewriteRule ^index.php\?page=(.+)$ http://example.com/$1.html [R=301,L]

Il faut savoir utiliser les technologies adaptes au problème. Il souhaitait un redirection sur un htaccess, et il a parfaitement raison, il n'y a aucun besoin de php ici.
 
WRInaute accro
relis le sujet du topic. Son rewrite est deja en place et ce n'est pas avec un simple tag [R=301] que Google va desindéxer ses anciennes pages. La solution est php...
 
Nouveau WRInaute
KOogar a dit:
relis le sujet du topic. Son rewrite est deja en place et ce n'est pas avec un simple tag [R=301] que Google va desindéxer ses anciennes pages. La solution est php...

Avec le rewrite que j'ai donner (qui est en fait une redirection), lors que tu vas sur la page index.php?page=jsaispasquoi tu recois un header avec une erreur 301 moved permanently, qui te renvois sur /jesaispasquoi.html.

La solution que je donne est IDENTIQUE a celle en php, elle ne fait juste pas appel a php. Mais directement a apache.
 
WRInaute accro
parceque toi dans le meme fichier .htaccess tu arrive a faire

la reecriture normal

Code:
RewriteRule ^page-(*.)\.html$  http://example.com/page.php?id=$1 [L]

et sa redirection...

Code:
RewriteRule ^page.php\?id=(.+)$ http://example.com/page-$1.html [R=301,L]


explique moi quand ca marche ?? je sens qu'on va y passer des heures si tu te rend pas vite compte de l'enormité du probleme.
On va faire comme le code source, boucler, boucler.... zzzzzzzzzz

remarque en y repensant, si le tag [L] est bien respecté, ca devrait le faire. As tu testé en production ce que tu proposes ?
 
Nouveau WRInaute
KOogar a dit:
remarque en y repensant, si le tag [L] est bien respecté, ca devrait le faire. As tu testé en production ce que tu proposes ?

Voila :)

il suffit de mettre la redirection AVANT la reecriture, et encore que les deux doivent marcher
 
Discussions similaires
Haut