L'envoi d'en-tête supplémentaire dans nginx réécrire
Maintenant, je suis la migration du domaine de mon application de app.example.com
à app.newexample.com
à l'aide de la suite de nginx
config:
server {
server_name app.example.com;
location /app/{
rewrite ^/app/(.*)$ http://app.newexample.com/$1;
}
}
J'ai besoin d'afficher un pop-up bannière pour informer l'utilisateur du nom de domaine de la migration.
Et je tiens à ce basé sur le referrer
ou quelques-genre-des-autres-d'en-tête à app.newexample.com
Mais comment puis-je joindre un en-tête supplémentaire sur le dessus de rewrite
de sorte que le javascript serait de détecter que l'en-tête et de montrer la bannière uniquement lorsque l'en-tête est présent coz à l'utilisateur d'aller directement à app.newexample.com
ne faut pas y voir que des pop-up bannière?
OriginalL'auteur Autodidact | 2013-05-12
Vous devez vous connecter pour publier un commentaire.
Le truc, c'est que, lorsque vous "réécrire" en URI ayant protocole et le nom d'hôte (c'est-à
http://app.newexample.com/
dans votre cas), Nginx questions juste redirection HTTP (je suppose que le code sera 301 aka "redirection permanente"). Cela vous laisse seulement deux mécanismes de transfert de toutes les informations au gestionnaire de la nouvelle URL:Puisque vous rediriger les utilisateurs vers le nouveau domaine, cookie est no-go. Mais même dans le cas d'un domaine commun, je choisirais URL pour transférer des informations de ce type, comme
Cela vous donne la liberté de traiter à Nginx ou dans un navigateur (à l'aide de JavaScript). Vous pouvez même faire ce que tu voulais, au début, l'émission d'un en-tête HTTP spécial pour JavaScript dans cette nouvelle application serveur Nginx configuration:
Je ne sais pas, je ne suis pas un expert en JavaScript (OP voulu cette approche). À mon humble avis c'est plus trivial pour le code JS pour vérifier simplement la chaîne de requête de localiser les documents.
OriginalL'auteur Alexander Azarov
Un problème similaire a été discuté ici. Vous pouvez essayer d'utiliser un module tiers HttpHeadersMore (je ne l'ai pas essayé moi-même). Mais même si elle ne fonctionne pas à tous, avec l'aide de cette module, vous pouvez absolument tout faire. Exemple est ici.
Eh bien, j'ai regardé serverfault.com/questions/459888/... Mais il a deux choses différentes, 1. Concentré sur un Seul domaine 2. D'autres n'est pas la traiter avec la coutume ou de référent en-têtes. N'est-ce pas?
OriginalL'auteur Alex Butenko
Votre redirection est le manque d'une chose, le type de redirection/code, vous devez ajouter
permanent
à la fin de votre réécriture de la ligne, je ne sais pas quel est le code de redirection par défaut si pas explicitement mentionné.Une meilleure façon de le faire est de retour
L'ajout d'un paramètre get comme mentionné ci-dessus serait également un moyen fiable de le faire, vous pouvez facilement configurer une session ( flash ) et de les réorienter à nouveau à la page elle-même, mais après la suppression de la annexé paramètre get.
EDIT:
La redirection ne pas envoyer de référent en-tête, si l'ancien domaine est encore à travailler, vous pouvez mettre un simple fichier php qui fait la redirection avec un en-tête d'appel.
OriginalL'auteur Mohammad AbuShady
Une solution possible sans les en-têtes de serait de vérifier le document.référent de la propriété:
À l'aide d'un 301 va définir le référent de l'ancienne page. Si le référent n'est pas commencer avec l'ancienne url de la page, il n'était pas dirigée par cette page. Peut-être un peu rapide n est sale, mais devrait fonctionner.
OriginalL'auteur Chris