![可以在 /paths 下托管不同的应用程序并映射到自定义域,而不是将它们托管在子域下](https://linux22.com/image/736337/%E5%8F%AF%E4%BB%A5%E5%9C%A8%20%2Fpaths%20%E4%B8%8B%E6%89%98%E7%AE%A1%E4%B8%8D%E5%90%8C%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%B9%B6%E6%98%A0%E5%B0%84%E5%88%B0%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9F%9F%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E5%B0%86%E5%AE%83%E4%BB%AC%E6%89%98%E7%AE%A1%E5%9C%A8%E5%AD%90%E5%9F%9F%E4%B8%8B.png)
大多数网站(例如 App Engine 和 Heroku)的 URL 如下:
https://my-app-name.herokuapp.com/foo
而不是这样:
https://herokuapp.com/my-app-name/foo
我想知道 (a) 为什么会这样,以及 (b) 是否有办法支持后者。GitHub 似乎使用 gh-pages 对 repo 中的项目执行此操作。例如,据我记得,给定一个这样的 repo:
https://github.com/myuser/myrepo
我可以向我的 repo 添加 CNAME 记录,在其他地方的 DNS 提供商/管理器上进行一些配置,最终得到一个自定义域,例如:
myrepodomain.com
我的问题是这样的。如果可以通过某种方式配置服务器或系统,以便将应用程序映射到小路而不是子域,所以foo.com/myapp
而不是myapp.foo.com
,这样您就可以获取该子路径并将其映射到自定义域,就像 GitHub 在我的示例中所做的那样。如果不可能,我想知道为什么不行。我隐约感觉到 cookies 和会话可能在某种情况下比另一种情况下更成问题,或者 SEO 可能是一个问题,但也许有解决方案。
本质上我想做的事情是:
https://foo.com/app1/some/path
https://foo.com/app2/another/path
https://foo.com/app...
然后,对于那些想要自定义域名的人,我将它们映射到他们想要的任何内容:
https://foo.com/app1 -> helloworld.com
https://foo.com/app2 -> foobar.com
想知道这是否有可能,如果可能,大致如何做到。
答案1
- 子域名用于防止与其他用户的路径冲突
- 对于第二点,你需要代理来对流量进行分类并将其发送到正确的地方