我今天开始建立我的产品网站。 我遵循了一些网上教程,这些教程教您如何在Google App Engine上部署静态网站。 并且已经成功部署。
但是,当我尝试自定义index.html的URL时,通过直接指向index.html位置来破坏index.html文件。
我成功的网站:Link Here
失败情况:Link Here
两种情况之间的区别只是URL的最后一个字符“ /”。 我不知道为什么index.html会以“ /”结尾。重定向处理程序应重定向到相同的文件位置...
经过多次测试。我发现问题与app.yaml中的运行时环境有关。 当env:flex时,我的网站运行良好。 并且在env时中断:(除了flex以外的任何静态) 所以,有两种方法可以解决:
使用flex环境。但我不知道如何重定向到index.html,因为在尝试后发现-handlers在flex env中不起作用。
保持静态环境轻松路由。但是问题是如何使网站保持良好状态。
请帮助...
重建并部署所有内容之后。 我的网站现在可以使用了。 但是,它仅适用于https://koki-6hats.appspot.com/index.html
对于其他情况,例如:
https://koki-6hats.appspot.com/index
https://koki-6hats.appspot.com/
https://koki-6hats.appspot.com/shouldGoToIndex.html
不起作用。 如何配置路由规则,以确保上面的所有链接都可以自动重定向到index.html?
感谢Alex和GAEfans回答了我的问题!
这是我当前的app.yaml:
runtime: python27
api_version: 1
threadsafe: true
default_expiration: "3m"
handlers:
- url: /(.*\.(appcache|manifest))
mime_type: text/cache-manifest
static_files: static/\1
upload: static/(.*\.(appcache|manifest))
- url: /(.*\.atom)
mime_type: application/atom+xml
static_files: static/\1
upload: static/(.*\.atom)
- url: /(.*\.crx)
mime_type: application/x-chrome-extension
static_files: static/\1
upload: static/(.*\.crx)
- url: /(.*\.css)
mime_type: text/css
static_files: static/\1
upload: static/(.*\.css)
- url: /(.*\.eot)
mime_type: application/vnd.ms-fontobject
static_files: static/\1
upload: static/(.*\.eot)
- url: /(.*\.htc)
mime_type: text/x-component
static_files: static/\1
upload: static/(.*\.htc)
- url: /(.*\.html)
mime_type: text/html
static_files: static/\1
upload: static/(.*\.html)
- url: /(.*\.ico)
mime_type: image/x-icon
static_files: static/\1
upload: static/(.*\.ico)
- url: /(.*\.js)
mime_type: text/javascript
static_files: static/\1
upload: static/(.*\.js)
- url: /(.*\.json)
mime_type: application/json
static_files: static/\1
upload: static/(.*\.json)
- url: /(.*\.m4v)
mime_type: video/m4v
static_files: static/\1
upload: static/(.*\.m4v)
- url: /(.*\.mp4)
mime_type: video/mp4
static_files: static/\1
upload: static/(.*\.mp4)
- url: /(.*\.(ogg|oga))
mime_type: audio/ogg
static_files: static/\1
upload: static/(.*\.(ogg|oga))
- url: /(.*\.ogv)
mime_type: video/ogg
static_files: static/\1
upload: static/(.*\.ogv)
- url: /(.*\.otf)
mime_type: font/opentype
static_files: static/\1
upload: static/(.*\.otf)
- url: /(.*\.rss)
mime_type: application/rss+xml
static_files: static/\1
upload: static/(.*\.rss)
- url: /(.*\.safariextz)
mime_type: application/octet-stream
static_files: static/\1
upload: static/(.*\.safariextz)
- url: /(.*\.(svg|svgz))
mime_type: images/svg+xml
static_files: static/\1
upload: static/(.*\.(svg|svgz))
- url: /(.*\.swf)
mime_type: application/x-shockwave-flash
static_files: static/\1
upload: static/(.*\.swf)
- url: /(.*\.ttf)
mime_type: font/truetype
static_files: static/\1
upload: static/(.*\.ttf)
- url: /(.*\.txt)
mime_type: text/plain
static_files: static/\1
upload: static/(.*\.txt)
- url: /(.*\.unity3d)
mime_type: application/vnd.unity
static_files: static/\1
upload: static/(.*\.unity3d)
- url: /(.*\.webm)
mime_type: video/webm
static_files: static/\1
upload: static/(.*\.webm)
- url: /(.*\.webp)
mime_type: image/webp
static_files: static/\1
upload: static/(.*\.webp)
- url: /(.*\.woff)
mime_type: application/x-font-woff
static_files: static/\1
upload: static/(.*\.woff)
- url: /(.*\.xml)
mime_type: application/xml
static_files: static/\1
upload: static/(.*\.xml)
- url: /(.*\.xpi)
mime_type: application/x-xpinstall
static_files: static/\1
upload: static/(.*\.xpi)
# image files
- url: /(.*\.(bmp|gif|ico|jpeg|jpg|png))
static_files: static/\1
upload: static/(.*\.(bmp|gif|ico|jpeg|jpg|png))
# audio files
- url: /(.*\.(mid|midi|mp3|wav))
static_files: static/\1
upload: static/(.*\.(mid|midi|mp3|wav))
# windows files
- url: /(.*\.(doc|exe|ppt|rtf|xls))
static_files: static/\1
upload: static/(.*\.(doc|exe|ppt|rtf|xls))
# compressed files
- url: /(.*\.(bz2|gz|rar|tar|tgz|zip))
static_files: static/\1
upload: static/(.*\.(bz2|gz|rar|tar|tgz|zip))
# index files
- url: /(.*)
static_files: static/index.html
upload: static/index.html
# site root
- url: /
static_files: static/index.html
upload: static/index.html
这是我的文件夹结构:
.root
- app.yaml
- static
- index.html
- favicon.ico
- styles.html
- php
- sendMail.php
- css
- ...
- js
- ...
- fonts
- ...
- image
- ...
此版本修复了第二个更新问题! 但是,
对于其他情况,例如:
https://koki-6hats.appspot.com/index/
https://koki-6hats.appspot.com/index/index.html
仍然无法使用。
例如,我想要的最终输出是:
文件夹结构:
.root
- app.yaml
- static
- index.html
- favicon.ico
- styles.html
- php
- sendMail.php
- css
- ...
- js
- ...
- fonts
- ...
- image
- ...
- folderA
- index.html
- css, js, etc...
- folderB
- index.html
- css, js, etc...
网址关系:
感谢Alex和GAEfans再次提供帮助。
答案 0 :(得分:2)
URL处理程序将如何超过第17行? (.*)
表示“零个或多个字符”。这意味着输入的所有内容都会转到index.html
注释掉的行更接近您想要的内容:
- url: / # first test for root url
static_files: 6Hats/index.html
upload: 6Hats/index.html
- url: /(.*) #everything else ends up here
static_files: 6Hats/\1
upload: 6Hats/(.*)
更新:
我会将所有静态文件目录都放在static
文件夹中。然后使用:
- url: /static
static_dir: 6Hats/static
- url: /favicon.ico
static_files: 6Hats/favicon.ico
upload: 6Hats/favicon.ico
- url: /.* #everything else after slash ends up here
static_files: 6Hats/index.html
upload: 6Hats/index.html
将静态文件的网址更改为/static/js/filename.js
,/static/css/filename.css
等格式。
如果您以指向index.html
的包罗万象的开头,这意味着您对静态文件(图像,js,css)的所有调用也将调用index.html
。当然,那是一团糟。
更新2:
如果您使用:
- url: .* #everything else ends up here
static_files: 6Hats/index.html
upload: 6Hats/index.html
(不带斜线),其他所有内容都应该在那里捕获。
答案 1 :(得分:1)
问题在于,应用程序引擎现在针对每个请求返回index.html
例如,如果您去这里:https://kokitang.com/6Hats/main.css,您会看到它仍然返回index.html
这是您的app.yaml
中的第17行
修改
好吧,我想我知道您现在要做什么。
使每个链接都路由到index.html
的主要问题是还需要加载其他文件,例如main.css
,main.js
等。
所以您只需要为他们设置一条特殊规则
handlers:
# images, css, js, etc
- url: /(.*\.(css|js|gif|png|jpg|jpeg))
static_files: 6Hats/\1
# all other links load index.html
- url:/(.*)$
static_files: 6Hats/index.html
第二次编辑
您需要将资源链接更改为绝对链接,而不是相对链接
<link rel="stylesheet" href="css/base.css">
需要成为
<link rel="stylesheet" href="/css/base.css">