2011-05-10 21 views
1

我有一系列不同的域名,我希望所有这些域名(通过从我的域名托管服务器转发的URL)转到Google应用引擎应用,该应用可以读取转发网址。因此,如果输入的域是原始XYZ.com,那么当我转发到我的应用程序时,我可以返回原始域名。我正在使用python变体。如何在不编码每个变体的情况下做到最好?确定转发的URL

回答

1

如果通过转发您的意思是HTTP重定向,您可以检查Referer头。

如果你的意思是DNS解析(例如,您的应用程序之间的区分通过自己的域名被调用和.appspot.com的一个),有SERVER_NAME环境变量(os.environ["SERVER_NAME"]),存储域(如www.example.com)用于发出请求。

0

如果您使用的是JavaScript重定向,那你可以只检查引用:

http://en.wikipedia.org/wiki/HTTP_referrer

但这不是一个100%的解决方案。

如果在一个appengine实例中有多个域停放,并且只想知道用户正在查看哪个域,则可以检查请求对象中的主机名。

2

通常,301/302重定向的目标无法确定发出重定向的URL。如果用户通过客户端代码重定向,则引用页面应出现在“Referer”请求标题中。对于服务器端重定向,我不相信这是用户代理填充(或覆盖)Referer头的标准。

如果您想将多个域指向您的App Engine应用,请尝试将它们配置为custom domains而不是转发。使用此路由,自定义域将保留在用户的地址栏中,并且您可以简单地检查主机头以查看访客正在使用哪个自定义域。