Redirection 301 avec pommes de partie (ancre) #
L'un de nos site web dispose d'URL comme ceci : example.oursite.com
. Nous avons décidé de déplacer notre site avec une URL comme ceci www.oursite.com/example
. Pour ce faire, nous avons écrit une règle de réécriture dans notre serveur Apache qui redirige vers notre nouvelle adresse avec un code 301.
De nombreux sites web un lien vers nous avec une Url de la forme example.oursite.com/#id=23
. Le problème est que la redirection effacer la valeur de hachage de la partie de l'URL avec IE. Autant que je sache, le hachage, la partie n'est jamais envoyé au serveur.
J'ai voulu mettre en place la redirection javascript pour garder la valeur de hachage de la partie, mais le Moteur de Recherche va pas être conscient que l'URL a changé. (pas de code 301 retourné)
Je veux que le Moteur de Recherche pour être informé de nos nouvelles URL(301) parce que nous avons besoin de transférer le grade de page de notre nouvelle URL.
Est-il un moyen de rediriger avec un code 301 et garder la partie de hachage(#id=23
) dans l'URL ?
Vous devez vous connecter pour publier un commentaire.
Les moteurs de recherche, en fait, de soins sur les balises de hachage, ils les utilisent fréquemment pour mettre en surbrillance le contenu spécifique sur une page.
À la question, cependant, d'ancrage emplacements sont malheureusement pas envoyé au serveur en tant que partie de la requête HTTP. Si vous souhaitez rediriger un utilisateur, vous aurez besoin de le faire en Javascript côté client.
Bon article: http://web.archive.org/web/20090508005814/http://www.mikeduncan.com/named-anchors-are-not-sent/
Je suis assez certain que le hachage/page d'ancrage/signet partie d'une URL n'est pas indexé par les moteurs de recherche, et, par conséquent, n'a aucun effet sur votre classement de page. Faire une recherche google pour "inurl:#" renvoie zéro documents, de sorte que le dos de mon hypothèse. Les liens provenant de sites externes seront indexées sans le hachage.
Vous avez raison en ce que le hash n'est pas envoyé au serveur, donc autant que je sache, il n'y a pas une bonne façon d'être en mesure de créer une url de redirection avec le hash en elle.
À cause de cela, c'est le navigateur pour gérer correctement la valeur de hachage lors de la redirection. Firefox 3.5 semble le faire avec succès. Si vous ajoutez une table de hachage à une URL qui a connu une redirection, vous verrez le changement d'URL dans la barre d'adresse vers le nouvel emplacement, mais le hachage reste là avec succès.
Modifier: En réponse au commentaire ci-dessous, si il y n'est pas un dièse dans l'URL externe de la pièce dont vous avez besoin, alors c'est tout à fait possible de réécrire l'URL. Une règle de réécriture Apache prendrait soin d'elle:
Si vous n'utilisez pas Apache, alors vous aurez à chercher dans le serveur de documents pour quelque chose de similaire.
Google a une syntaxe spéciale pour les applications AJAX qui est basé sur le hachage Url: http://code.google.com/web/ajaxcrawling/docs/getting-started.html
Vous pouvez créer une page sur l'ancienne adresse qui intercepte toutes les requêtes et les redirige vers le nouveau site avec la bonne adresse et le code.
J'ai fait quelque chose comme cela, mais il était dans asp.net, qui, j'imagine, ce n'est pas la langue que vous utilisez. De toute façon il doit y avoir un moyen de le faire dans n'importe quelle langue.
Lors du retour d'état 301, votre serveur est censé renvoyer un 'Lieu:' en-tête qui pointe vers le nouvel emplacement. Dans la pratique, la façon dont cela est mis en œuvre varie; certains serveurs de fournir l'URL complète (netloc et chemin d'accès), certains donnent juste le nouveau chemin d'accès et attendre le navigateur pour trouver votre chemin sur l'original netloc. Il semble que votre règle de réécriture est le décapage, le chemin d'accès.
Un moyen facile de voir que le retour de l'Emplacement de l'en-tête est, dans le python shell:
J'ai peur de ne pas en savoir assez sur mod_rewrite pour vous dire comment faire la règle de réécriture correctement, mais ce devrait vous donner une idée de ce que votre serveur est en fait dire le client à faire.
De voir que le serveur ne verra jamais le
#
(écarter les Redirections 301) et Google a retiré de leur Processus d'exploration AJAX, il semble que la première solution est la seule façon de!Comment j'ai fait:
Je suis en supposant que parce que les crawlers de Google ne sont en effet d'exécuter du Javascript, les nouvelles pages seront indexées correctement.
Je l'ai mis dans un
<script>
balise directement en dessous de la<title>
marque, de sorte qu'il est exécutée avant toute autre JS/CSS. Notez que ce script ne devrait être nécessaire pour votre fichier d'index.Les robots de recherche ne se soucient pas de balises de hachage. Et si vous les utilisez pour une sorte de flash ou des appels AJAX, vous avez des problèmes plus graves que vos redirections 301 ne fonctionnent pas. Parce que si vous avez le contenu sous une autre forme, les moteurs de recherche ne sont pas l'indexation de votre site et vous souffrent certainement, comme pour le SEO va.
J'ai enregistré mon compte donc je ne peux pas modifier.
zombat : je suis désolé j'ai fait une erreur dans mon commentaire. Le lien de notre vidéo est exemple.oursite.com/#video_id=233. Dans ce cas, ma règle de réécriture Apache ne fonctionne pas.
Nick Berardi: Nous avons changé notre mode de fonctionnement des liens. Nous n'utilisons pas de # de plus, uniquement pour la compatibilité descendante