2010-10-24 39 views
1

有时它是最简单的东西,让我绊倒。应用程序引擎 - 重定向到静态内容

我有一个在App Engine上运行的应用程序,它利用子域。我想重定向到不同的HTML页面,这取决于是否使用子域名。

例如,如果用户试图通过子域注册新帐户,这并没有什么意义,所以我想重定向到promary域上的注册页面:

 
user_subdomain.main_domain.com/signup_for_new_account.html 
----redirect to--> 
main_domain.com/signup_for_new_account.html 

回答

3

我讨论了子域路由here。简而言之,您可以编写自己的(相当简单的)WSGI中间件,负责将不同的子域路由到不同的WSGI应用程序。

0

您可以用JavaScript做客户端:

if (location.hostname !== 'main_domain.com') { 
    location.href = 'http://main_domain.com' + location.pathname; 
} 

做同样的事情服务器端是棘手。

只根据路径处理路由,而不是主机名。在app.yaml中,不可能将不同的处理程序分配给不同主机名上的相同路径。您需要将/signup_for_new_account.html指向动态处理程序,该处理程序首先检查主机名,然后向静态内容发出重定向或代理。

+0

将服务器端的设计问题推送到用户的浏览器是一个_terrible_想法 - 来自设计学院,它使我们将​​asp.net发送302重定向到错误URL。 – 2010-10-26 11:15:17

1

在Python中,您可以checkos.environ['SERVER_NAME'] == 'main_domain.com',然后redirect

对于Java I 认为该请求有一个getServerName方法,该方法返回服务器名称。那么你可以redirect,这基本上意味着设置一些标题并返回。

相关问题