使用dispatch.xml在自定义域下路由非默认模块的根

时间:2014-08-01 03:32:57

标签: google-app-engine

使用默认模块的dispatch.xml功能的不完整文档:

我有以下dispatch.xml

<?xml version="1.0" encoding="UTF-8"?>
<dispatch-entries>
    <dispatch>
        <url>www.custom-domain.com/</url>
        <module>default</module>
    </dispatch>
</dispatch-entries>

上述路线没有任何问题。我也省略了正在运行的子域映射。

以下是我的部署内容:

gcloud preview app list-versions
11:24 PM Host: appengine.google.com
admin-console: ['2']
default: ['2', ah-builtin-datastoreservice]

我想将http://www.custom-domain/admin/*配置为指向我的admin-console模块。

我知道该模块已部署并正常运行,因为当我转到http://admin-console.myappid.appspot.com时,它会显示正确的index.html页面。

我尝试添加以下节based on the examples in the documentation

<dispatch>
    <url>*/admin/*</url>
    <module>admin-console</module>
</dispatch>

我保存了文件并运行了mvn appengine:update_dispatch,它报告没有错误,并且操作成功。

当我尝试转到http://www.custom-domain.com/admin/index.htmlhttp://www.custom-domain/admin/的任何其他变体时,它会以404 Not Found消息失败。

我也尝试过以下操作,但也失败了404 Not Found

<dispatch>
    <url>www.comic-pages.com/admin/*</url>
    <module>admin-console</module>
</dispatch>

我搜索并搜索过,找不到这个不起作用的原因。

我在这里缺少的是文档和示例中没有明确说明的内容?

1 个答案:

答案 0 :(得分:4)

我期望它做什么:

<dispatch>
    <url>www.custom-domain.com/admin/*</url>
    <module>admin-console</module>
</dispatch>

www.custom-domain/admin/*模块的/*路由到admin-console

通过日志进行调试我讨厌它!

在深入了解default模块的日志并且没有找到www.custom-domain.com/admin/*路由的任何条目之后,我查看了admin-console模块,并在那里找到了大量条目。 这些时间比预留时间晚了大约10分钟。

我试图从index.html模块的根上下文加载admin-console

http://www.custom-domain.com/admin/index.html

这在admin-console模块日志中产生了以下错误。

/admin/index.html No handlers matched this URL.

它实际上在做什么:

它实际上正在做的是将www.custom-domain.com/admin/*路由到/admin/*模块的admin-console

我尝试添加目录并将index.html移至src/main/webapp/admin/index.html。这也不起作用,实际上是在寻找处理程序。

我创建了一个Servlet并为<url-pattern>/admin/*</url-pattern>添加了一个映射,它开始工作。

如果要路由到非默认模块的根目录:

因此,如果要将某些内容映射到非默认模块的/,则必须指定子域并将其映射到模块。

<dispatch>
    <url>admin.custom-domain.com/*</url>
    <module>admin-console</module>
</dispatch>

这是我发现在非默认模块的根上下文中访问任何内容的唯一方法。