Je prévois de mettre en place un mécanisme dans l'un de mes sites Web.
Supposons que les liens de mon site Web ne renvoient pas directement à la page à laquelle ils sont censés être mais qu'ils renvoient tous à une page nique PHP et envoient leurs paramètres uniques et que - nique PHP page sur la base de ces paramètres effectue un traitement sur la base de données, puis redirige vers les pages réelles auxquelles elles étaient censées faire référence à l'aide de header("Location:$_GET['page_name']");
...
Hmm, il y a plusieurs problèmes quand vous faites cela.
Tout d'abord, l'URL réelle de la page vers laquelle vous naviguez ne figure pas dans la page d'origine. Avoir un page.php?location=Home
(où page.php traite votre requête et redirige vers location
) pour tous vos liens fait que les utilisateurs ne voient que l'URL page.php. Je ne sais pas combien de personnes consultent réellement l'URL qu'elles visitent, mais cela pourrait prêter à confusion si les gens voient que tous les liens pointent vers la même page. Certains sites Web le font pour les liens sortants et cela m'agace toujours vraiment. Je ne vois pas la destination du lien en un coup d'œil.
Bien sûr, les CMS comme Joomla et MediaWiki le font par défaut (index.php? Id = 1), mais il est généralement admis que les URLs propres, sans paramètres, offrent à la fois une meilleure convivialité et une meilleure indexation Google.
En ce qui concerne les moteurs de recherche, il y a bien sûr l'en-tête PHP qui peut vous aider. Vous pouvez simplement utiliser un code de redirection 301 dans votre en-tête avant de l'envoyer: http://phpprogrammingguide.blogspot.com/2005/11/php-header-301-redirect-moved.html
De cette façon, les moteurs de recherche associeront page.php?location=Home
à /home/
, idem pour toutes les autres pages. Vous pouvez même aller jusqu'à installer Google Webmaster Tools et indiquer manuellement quels paramètres doivent être ignorés et lesquels ne doivent pas (location
ne devraient évidemment pas être ignorés, car cela permet à Google de distinguer les différents liens internes. ).
De plus, l'ajout d'un rel = "canonique" dans les pages aidera les moteurs de recherche à reconnaître quelle URL devrait être laquelle. Même s'ils se retrouvent sur une page avec ?location=x
ayant une URL canonique avec /x/
, ils s'assureront que l'URL correcte est indexée.
Un autre problème sera le bouton retour du navigateur. C'est le bouton le plus utilisé sur Internet et il ne fonctionnera pas sur votre site si vous utilisez ce script. En cliquant en arrière, un utilisateur accédera à la page page.php et il ne fera que les rediriger de nouveau, ce qui causera beaucoup d’irritation chez son utilisateur et de fausses statistiques.
Enfin, il est très important de ne pas avoir un saut de page.php. Parfois, il arrive qu'un lien ou une page se rompt pour une raison quelconque. Une page cassée dans votre site est ennuyeuse, mais si page.php se brise, TOUS les liens internes sont supprimés. Vous pouvez éviter cela en laissant le script vous envoyer un e-mail dès que quelqu'un rencontre une erreur ou quoi que ce soit, mais soyez prudent.
Dans l'ensemble, je l'éviterais si vous pouviez le faire autrement. Il existe des solutions de contournement pour les moteurs de recherche, mais cela nuira à votre facilité d'utilisation, quoi qu'il en soit.
Si vous utilisez une redirection 301, tout ira bien. L'ensemble de la procédure semble un peu étrange. Pourquoi n'utilisez-vous pas simplement mod_rewrite
pour avoir une belle URL et restituer le script avec un PHP?
Faites ce que vous faites maintenant, ajoutez simplement les liens statiques vers vos autres pages quelque part sur la page (s’ils ne sont pas trop nombreux). Problème résolu. ;)
Je comprends ton problème. Vous souhaiterez peut-être suivre les utilisateurs qui cliquent sur un lien donné ou sur le nombre de vos utilisateurs qui consultent un partenaire ou quelque chose du genre.
Je ne peux pas vraiment dire quels devraient être les problèmes d’indexation. Le premier et unique qui m'est venu maintenant est que votre jus de page n'est pas passé aux pages cibles, les moteurs de recherche considéreront donc ces liens comme des liens internes.
Mais je proposerais une solution qui devrait bien fonctionner dans la plupart des cas. Utilisez AJAX sur ces liens. Utilisez l'attribut rel
dans ces ancres, comme:
<a rel="external" href="http:yourpartner.tld">See more here</a>
Filtrer les liens qui ont rel="external"
et leur attacher un événement. Lorsque vous cliquez dessus, un appel ajax sera effectué avec le paramètre href
que vous allez interroger. La fonction AJAX doit simplement renvoyer true ou false afin de permettre aux utilisateurs d'être réellement redirigés vers leur page ou d'empêcher la redirection en cas d'erreur.