8797 sujets

Développement web côté serveur, CMS

Salut !
J'ai des pages en news-112.html que j'ai réécrie depuis news.php?id=112. Or, quand je suis sur news.php?id=112, je veux rediriger automatiquement sur news-112.html. Comment faire ?
Merci !
L'URL rewriting ne va pas rediriger le visiteur qui se trouve sur la page news.php?id=112 vers la page news-112.html. Par contre il va, lorsqu'un visiteur sera sur la page news-112.html (qui n'existe pas physiquement), afficher la page news.php?id=112.

Donc une fois que ton fichier .htaccess est correctement configuré, il faut que tes liens renvoient vers la page news-112.html et pas vers news.php?id=112.
OK. Et c'est possible de faire ça sous forme de regex ? Je suis nul dans ce domaine, des idées comment faire ?
Logiquement tes liens sont en dynamique (sinon pas trop d'intérêt d'utiliser l'URL-rewriting), donc tu ne devrais pas avoir 50 occurrences à changer.

A l'endroit de ton code où tu génères tes liens, il te suffit de changer :
<a href="news.php?id=<?php echo $id; ?>">Mon lien</a>
par
<a href="news-<?php echo $id; ?>.html">Mon lien</a>

Modifié par MattBPA (15 Sep 2012 - 18:30)
Oui, ça c'est fait depuis longtemps. Mais google pointe toujours sur ?id=id. Surement un autre site qui utilise l'ancienne adresse. Donc c'est pas possible de rediriger dynamiquement ?
Apoooo a écrit :
Tes URL ne sont pas réécrite via ton .htaccess ? SI c'est le cas, ça devrait être automatique..


Pour moi, c'est la solution la plus simple, c'est ce que je fais pour mes sites et aucun problème.

Il faut que l'hébergeur accepte la réécriture, c'est tout. Si tu as un hébergement payant, tu as pas de problème normalement.
Les URLS sont réewrite mais je veux tous simplement faire une redirection de l'ancienne URL faire la nouvelle !
Si c'est juste sur Google, tu n'auras pas trop le choix, il faut attendre qu'il remette les url à jour.

Si tu mettais un script de redirection vers news.php vers news.html tu obtiendrais une boucle infinie (vu qu'au final news.html n'est que le miroir de news.php, ça équivaudrait à faire une redirection vers news.php)

Si tu as fait un sitemap de ton site avec les adresses news.php, pense à le changer, ça peut accélérer le processus.
jb_gfx a écrit :
En même temps réécrire news.php?id=112 en news-112.html ça ne présente absolument aucun intérêt...

Perso je trouve plus joli !
Je suis plutôt d'accord avec jb_gfx. Quitte à faire de l'URL rewriting, fait au moins en sorte que le titre de la news apparaisse dans l'URL Smiley cligne (nécessite un traitement sur la chaîne de caractère au préalable.)

news.php?id=112 => news-le-nouvel-iphone-5-est-sorti-112.html
@doc mcfly: Ta demande est pertinente.
Pour faire ce que tu souhaites, il suffit d'indiquer en haut de ton script news.php (tout tout en haut puisque tu c'est la première chose que devra faire ton navigateur quand il arrive sur ta page quelque chose comme ceci:

<?php
if($_SERVER['QUERY_STRING'] == 'news.php?id='.$_GET['id']) header("Location: news-".$_GET['id'].".html");

// ... et puis le contenu de ton fichier news.php
?>
a écrit :
jb_gfx a écrit :
En même temps réécrire news.php?id=112 en news-112.html ça ne présente absolument aucun intérêt...


En fait si, cela a un intérêt: Google préfére les pages en .html qu'en PHP avec moult paramètres.
elfyps a écrit :

En fait si, cela a un intérêt: Google préfére les pages en .html qu'en PHP avec moult paramètres.


Jusqu'à 2 paramètres ça ne change rien, et vu que là il n'y en a qu'un... Quand au HTML vs PHP c'est complètement faux.
Modifié par jb_gfx (16 Sep 2012 - 15:39)
elfyps a écrit :

En fait si, cela a un intérêt: Google préfére les pages en .html qu'en PHP avec moult paramètres.

Smiley tusors

En revanche être concis pour les URL c'est bien. Par exemple, une URL à rallonge n'est pas du tout un gage de bon positionnement.
elfyps a écrit :
@doc mcfly: Ta demande est pertinente.
Pour faire ce que tu souhaites, il suffit d'indiquer en haut de ton script news.php (tout tout en haut puisque tu c'est la première chose que devra faire ton navigateur quand il arrive sur ta page quelque chose comme ceci:

&lt;?php
if($_SERVER['QUERY_STRING'] == 'news.php?id='.$_GET['id']) header(&quot;Location: news-&quot;.$_GET['id'].&quot;.html&quot;);

// ... et puis le contenu de ton fichier news.php
?&gt;
jb_gfx a écrit :
En même temps réécrire news.php?id=112 en news-112.html ça ne présente absolument aucun intérêt...

En fait si, cela a un intérêt: Google préfére les pages en .html qu'en PHP avec moult paramètres.

Le code fait une boucle infini Smiley decu . Vous pensez que ça vient du serveur ? (sinon query string ne fais que id=GET ID et non le reste, mais je l'ai adapté en conséquent).
Modifié par doc mcfly (18 Sep 2012 - 18:16)
C'était à prévoir

MattBPA a écrit :

Si tu mettais un script de redirection vers news.php vers news.html tu obtiendrais une boucle infinie (vu qu'au final news.html n'est que le miroir de news.php, ça équivaudrait à faire une redirection vers news.php)