我一直在使用谷歌应用程序引擎托管一个网站。我的本地主机上一切正常。这是一个非常简单的网站,主页是一个有3页的index.html文件。我使用php进行表单处理。我确信这个问题在我的app.yaml文件中。我是GAE的新手,我在网上试过几个例子。当我部署时没有错误。这是我想出的最好的文件:
runtime: php74
handlers:
- url: /index.html
static_files: /index.html
upload: /index.html, /campsite-form-results.php, /contact_us.php
- url: /(.*)
static_files: /1
upload: /(.*)
每当我试图浏览到网站时,我都会收到这个错误:
Error: Not Found
The requested URL / was not found on this server.
如果我能添加任何有用的内容,请发表评论。非常感谢。
如果您使用的是GAE Standard或Flex,则没有指定,但我将参考标准版本,因为您提供的app.yaml配置文件具有相同的结构。
我首先注意到的是,您正在使用static_file
作为Handler元素:
可选。静态文件模式处理程序将URL模式与随应用程序上载的静态文件的路径相关联。URL模式正则表达式可以定义要在文件路径的构造中使用的正则表达式分组。您可以使用它而不是static_dir来映射到目录结构中的特定文件,而无需映射整个目录。
您正在使用的元素的内容与使用MIME类型的static_dir
元素更相似。
可选。从应用程序根目录到包含静态文件的目录的路径。匹配的url模式结束后的所有内容都被附加到static_dir,以形成所请求文件的完整路径。
静态目录中的每个文件都使用与其文件扩展名对应的MIME类型提供服务,除非被目录的MIME_type设置覆盖。给定目录中的所有文件都作为静态文件上传,并且没有一个可以作为脚本运行。
因此,现在您可以选择要使用其中的哪一个,并尝试遵循正确的路径声明。
浅谈upload
元素:
可选。一个正则表达式,它与此处理程序将引用的所有文件的文件路径相匹配。这是必要的,因为处理程序无法确定应用程序目录中的哪些文件与给定的url和static_files模式相对应。静态文件是与应用程序文件分开上传和处理的。上面的示例可能使用以下上传模式:archives/(.(/items/(.(
所有这些元素都是可选的,正如描述所说,我也会留下url
的描述,以备您检查。
处理程序下的必需元素。URL模式,作为正则表达式。表达式可以包含分组,这些分组可以在具有正则表达式反向引用的脚本的文件路径中引用。例如,/profile/(.(/(.(将匹配URL/profile/edit/manager,并使用edit和manager作为第一和第二组。
在这种情况下,我建议:
handlers:
- url: /index
static_dir: index
upload: .*.(html|php)$
# I'm not a regex expert. This can also work for your specified files:
# (?=index).(html)|(?=campsite-form-results)(?=contact_us).(php)$
请阅读应用程序。yaml参考,如果您没有经验,也可以在本页的帮助下尝试不同的Regex。