【问题标题】:Internal links not working on appengine deployed site内部链接在应用引擎部署站点上不起作用
【发布时间】:2016-03-25 22:49:54
【问题描述】:

我刚刚部署了一个网站,用于在 Google Appengine 上进行测试。 使用 google App Engine Launcher 成功完成。

现在我尝试打开已部署的网站,请检查这里https://acuteservice-1260.appspot.com内部页面打不开。

下面是我的APP YAML文件

application: acuteservice-1260
version: 1
runtime: php55
api_version: 1
threadsafe: yes

handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css|eot|svg|ttf|woff))
  static_files: \1
  upload: (.*\.(gif|png|jpg|ico|js|css|eot|svg|ttf|woff))

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: .*
  script: index.php

【问题讨论】:

  • 内部页面打不开是什么意思?是否有任何错误被抛出?
  • 没有错误一切正常,如果我点击 about.php 它仍然显示主页。
  • 添加了一行来为所有 php 脚本提供服务,而无需担心实际名称。看看

标签: google-app-engine


【解决方案1】:

请在 YAML 下尝试,所有静态文件都应该放在“静态”文件夹中。

application: acuteservice-1260
version: 1
runtime: python
api_version: 1

default_expiration: "30d"

handlers:
- url: /(.*\.(appcache|manifest))
  mime_type: text/cache-manifest
  static_files: static/\1
  upload: static/(.*\.(appcache|manifest))
  expiration: "0m"

- url: /(.*\.atom)
  mime_type: application/atom+xml
  static_files: static/\1
  upload: static/(.*\.atom)
  expiration: "1h"

- 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: /(.*\.php)
  mime_type: text/html
  static_files: static/\1
  upload: static/(.*\.php)
  expiration: "1h"

- url: /(.*\.ico)
  mime_type: image/x-icon
  static_files: static/\1
  upload: static/(.*\.ico)
  expiration: "7d"

- 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)
  expiration: "1h"

- 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)
  expiration: "1h"

- 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)
  expiration: "1h"

- 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/\1/index.php
  upload: static/(.+)/index.php
  expiration: "15m"

- url: /(.+)
  static_files: static/\1/index.php
  upload: static/(.+)/index.php
  expiration: "15m"

# site root
- url: /
  static_files: static/index.php
  upload: static/index.php
  expiration: "15m"

- url: .*
  script: index.php

【讨论】:

    【解决方案2】:

    这是因为您已指示应用引擎将所有操作 (.*) 路由到 index.php。您会意识到,当您导航到网站上的任何路径时,它都会被重定向到 index.php

    您可以做的是为您网站中的所有其他页面添加更多 url 映射,这些映射应位于 index.php 映射之前。

    - url: /about.php
      script: about.php
    - url: /services.php
      script: services.php
    

    等等

    然后你可以把你的catch all url映射到index.php最后。

    如果这太麻烦并且有一堆 php 文件,您可以使用这样的东西来提供所有 php 脚本:

    application: acuteservice-1260
    version: 1
    runtime: php55
    api_version: 1
    threadsafe: yes
    
    handlers:
    - url: /(.*\.(gif|png|jpg|ico|js|css|eot|svg|ttf|woff))
      static_files: \1
      upload: (.*\.(gif|png|jpg|ico|js|css|eot|svg|ttf|woff))
    
    - url: /favicon\.ico
      static_files: favicon.ico
      upload: favicon\.ico
    
    # Serve php scripts.
    - url: /(.+\.php)$
      script: \1
    
    - url: /.*
      script: index.php
    

    【讨论】:

    • 谢谢 Jeffrey 有没有其他方法不添加全部捕获?
    • 抱歉不清楚。抓住所有我的意思是您正在使用的.*。您可以专门将/ 映射到index.php,然后删除您当前的映射.*。这样,当您导航到错误的路径时,它会抛出 404 而不是显示您的索引脚本
    • 好的,它不工作 url "/index.php" 不匹配任何处理程序。
    • - url: /services script: services.php 不工作
    • 如果您没有设置,url 'index.php' 将不匹配任何处理程序。为了使它匹配,您必须编写一个处理程序来处理它。喜欢-url: /index.php script: index.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2021-04-15
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多