我要解决的问题
我希望能够在启用 SSL 的自定义域上将不同的用户发送到我的 Google App Engine 应用程序的不同版本。这需要以可控的方式完成,即,即使着陆页也应该不同,并且它必须在用户的多个单元上工作。
无法上类的解决方法
我正在尝试设置一个带有子域的自定义域,并希望能够访问不同版本的应用程序。例如,我有 myapp.mydomain.com,我想在 alpha.myapp.mydomain.com 上运行一个版本 (alpha),在 beta.myapp.mydomain.com 上运行一个版本 (beta)(默认为 alpha) .
我使用 Google Developers Console 设置自定义域,使用 myapp.mydomain.com 和 *.myapp.mydomain.com 作为自定义域。
只要我不尝试在 SSL 上添加,它就可以完美运行,即 beta.myapp.mydomain.com 提供名为 beta 的版本。当我设置 SSL 时,我首先将我的应用程序添加到 Google Apps(根据 https://developers.google.com/appengine/docs/ssl ),然后设置我的域以指向我的应用程序。首先我添加 myapp.mydomain.com,然后是 alpha.myapp.mydomain.com,最后是 beta.myapp.mydomain.com。
完成后 beta.myapp.mydomain.com 开始提供默认版本。除了它有时也服务于测试版(这种情况每 20 次左右就会发生一次,我认为它现在是一个小故障)。
我的问题: a) 我应该在 Google Apps 和 Google Developer Console 中设置我的域吗?或者我应该从 Google Developer Console 中删除设置吗?我都试过了,似乎给出了相同的结果。 b) 似乎可以通过使用中所示的模块来完成它 Google App Engine custom domains, subdomains and SSL在Appengine modules dispatch.xml routing with custom domain .这是唯一的方法,还是我的设置有误?
目前收到的建议
一个建议是使用流量拆分并根据我希望用户最终使用的版本设置唯一的 cookie。我不知道这一点,它会解决我一直在寻找的其他一些问题。不过,它并没有解决我当前的问题,因为我需要在登录前设置此设置。不过这个答案很有用。
最佳答案
我将回答我为使这项工作对我所做的工作。
我没有将用户发送到不同版本的应用程序,而是创建了一个名为 alpha 的新模块,并使用 alpha.myapp.mydomain.com 将用户定向到使用 dispatch.xml 的该模块。
<dispatch>
<url>*alpha.myapp.mydomain.com/*</url>
<module>alpha</module>
</dispatch>
我在 App Engine 控制台 ( https://console.developers.google.com ) 的 Compute->App Engine->Custom Domains 下为 *.myapp.mydomain.com 和 alpha.myapp.mydomain.com 设置自定义域。我还将 URL alpha.myapp.mydomain.com 添加到 Google Apps ( https://admin.google.com) 上我的 App Engine 应用程序接受的 URL。这也让我可以通过 SSL 运行。
我打算在另一个域(我的主域的域别名)下运行该应用程序,所以我也尝试了。为了完成这项工作,我只在 Google Apps 中将域别名添加为 www.mydomainalias.com 和 alpha.mydomainalias.com,因为如果我将它添加到 Google App Engine 自定义域,我会收到一条错误消息(“我们无法处理您的此时请求。请稍后再试。(错误#1000)”)。我不知道为什么没有成功。
关于google-app-engine - 使用具有不同版本应用程序的 SSL 在 Google App Engine 上设置自定义域(带有子域),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405230/