2010-03-13 1 views
2

Firefox:
http://example.com/about/#anchor ->http://www.example.com/about/#anchorConserver l'ancre lorsque redirigeant sous-domaine (IE)

Internet Explorer 6-8:
http://example.com/about/#anchor ->http://www.example.com/about/

Pourquoi l'ancre est tombé dans IE et que puis-je faire à ce sujet? (La chaîne de requête n'est pas supprimée, seule la partie #xyz)

Une en-tête PHP ou une redirection javascript est-elle ma seule option? Merci pour tous les conseils.

Mise à jour: Semble que le hachage n'est pas envoyé au serveur. Est-ce qu'une combinaison d'un en-tête PHP 301 et d'une redirection javascript (avec location.hash) serait une bonne solution?

+0

Les ancres ne sont pas envoyées au serveur http://stackoverflow.com/questions/1665200/how-to-deal-with-in-a-query-string-in-mod-rewrite/1665209#1665209 donc il n'y a rien vous pouvez faire le côté serveur. C'est le nième bug de l'IE. J'ai essayé maintenant et Firefox et Chrome effectuent des redirections correctes sans avoir à valider l'ancre. Malheureusement Safari4 conserve l'ancre comme IE8. –

Répondre

1

Avait un problème similaire dans Tomcat/JSP, ne sais pas à propos de PHP. Dans Tomcat, la règle était que l'option #anchor est uniquement destinée au navigateur/agent utilisateur, donc vous ne pouvez pas l'obtenir. Ma solution de contournement consistait à utiliser Javascript dans la page pour réaliser la redirection. Mon conseil serait que si vous ne pouvez pas le faire fonctionner en PHP bientôt alors commencez à essayer une solution de contournement Javascript.

2

Les ancres ne sont jamais envoyées au serveur, donc aucune solution côté serveur ne peut les conserver.

1

Seules les ancres côté serveur peuvent être utilisées lors d'une redirection côté serveur. Ils doivent avoir un ID (bien que je ne sache pas s'ils doivent être créés par programmation)

Vous pouvez également transmettre un paramètre et utiliser le paramètre onload pour déplacer le focus vers l'ID ou le lien hypertexte.

Questions connexes