Appengine:使用dispatch.yaml进行路由

时间:2015-09-30 22:22:44

标签: php google-app-engine

我在Appengine上有一个模块exmplemodule

我的dispatch.yaml

application: sampleappname

dispatch:
- url: "*/"
  module: default

- url: "example.abc.com/*"
  module: examplemodule

工作正常,所以当我尝试访问example.abc.com/index.php时,它会正常加载index.php文件。但我想要的是,当我应该访问example.abc.com时,index.php文件应该打开。

我怎样才能实现这个目标?

问我这些信息是否不足以回答我的这个问题。

2 个答案:

答案 0 :(得分:1)

注意:我的答案来自python GAE,我怀疑可能也适用于php,但我不是100%肯定。

我正在使用类似的dispatch.yaml,但仅使用第二条规则。

我刚在我的应用上测试了example.abc.com之类的请求被发送到 examplemodule ,并且可以在该模块的GAE日志中看到(它还启动了该模块的实例) :

enter image description here

从这个日志中我可以看到example.abc.com实际上已扩展为'example.abc.com/',这意味着它将被您的第一条规则捕获。

首先检查两个模块的日志,看看哪个模块真正得到了请求。

如果确实进入默认,我会看到一些尝试:

  • example.abc.com/
  • 之前专门为*/添加规则
  • 颠倒2条现有规则的顺序,甚至完全删除第1条规则(除非确实想要在默认中捕获example.abc.com中仅限目录的网址>) - 我将为每个模块配置单独留下这些规则,而不是调度程序文件。

注意:我还有 examplemodule 的默认处理程序处理空路径请求的方式与对模块主页的请求相同,以防止404(可能你需要一些不同的PHP):

requested_path = self.request.path_info[1:]
if not requested_path:
    requested_path = 'home.html'

答案 1 :(得分:0)

模块yaml的{​​{1}}文件需要定义路由到examplemodule的{​​{1}}的处理程序

如下所示

/