2010-11-18 4 views
1

J'ai un problème étrange ici et ne peux pas comprendre la cause. J'ai un script php sur un serveur nginx qui déclenche une redirection vers un autre (sous) domaine sur le même serveur:Nginx: L'en-tête de l'emplacement envoyé par PHP redirige avec le changement de domaine

Par exemple: foo.domain.com/redirect.php header ("Status: 301 "); header ("location: http: //www.domain.com/new_url/");

Le résultat est que je suis en train redirigé vers: foo.domain.com/new_url

Le domaine ne change pas du tout, bien que mes têtes de réponse semblent bien.

Des idées?

+1

Êtes-vous 'die()' ing après le 'header()'? –

+0

Etes-vous sûr que ce n'est pas seulement l'affichage de la barre d'adresse dans le navigateur? Cela ne change pas nécessairement quand il rencontre un 301 –

+0

Juste une note non liée, mais vous n'avez pas besoin d'en-tête() appels pour envoyer le statut 301, vous pouvez faire: 'header ('Emplacement: http: //www.domain .com/newloc ', true, 301); ' –

Répondre

0

Vérifiez votre contenant votre site dans un iframe,

Certains hôtes peuvent le faire si son hébergement gratuit, tous si une certaine configuration de domaines permet au site d'être contenu dans une sorcière iframe causerait la correctement votre description

+0

Ce n'est pas dans un iframe, ni un hébergement bon marché. C'est un plus gros cluster avec quelques serveurs derrière un loadbalancer. – Steffen

+0

désolé alors c'était une idée que c'est la seule fois que ça m'est arrivé – Barkermn01

1

Ok, j'ai finalement trouvé la cause de mes ennuis. Ni Nginx, ni PHP ont causé les problèmes. Mes serveurs Web sont derrière un loadbalancer fonctionnant avec Pound. Pound dispose d'une fonctionnalité pour réécrire les domaines dans les redirections d'en-tête (activé par défaut). Nous avons maintenant désactivé cette fonctionnalité et toutes les redirections fonctionnent enfin comme prévu!

Questions connexes