美化谷歌应用程序引擎PHP静态网站上的URL

美化谷歌应用程序引擎PHP静态网站上的URL,php,google-app-engine,Php,Google App Engine,我正在用一些简单的PHP代码为我的朋友开发一个静态网站。每个页面的url上都有一个.php,例如xxxxx.com/service.php。我做了一些研究,发现在app.yaml上进行调整并不是一种优雅的方法,因为它不会优雅地处理404错误。我的想法是,我可以创建一个特殊的PHP文件,接收来自app.yaml的以.PHP结尾的请求,并像.htaccess那样处理每个请求。由于缺乏PHP知识,我无法生成文件中的代码。请告诉我这个过程 下面是我的app.yaml runtime: php55 api

我正在用一些简单的PHP代码为我的朋友开发一个静态网站。每个页面的url上都有一个.php,例如xxxxx.com/service.php。我做了一些研究,发现在
app.yaml
上进行调整并不是一种优雅的方法,因为它不会优雅地处理404错误。我的想法是,我可以创建一个特殊的PHP文件,接收来自
app.yaml
的以.PHP结尾的请求,并像
.htaccess
那样处理每个请求。由于缺乏PHP知识,我无法生成文件中的代码。请告诉我这个过程

下面是我的
app.yaml

runtime: php55
api_version: 1
instance_class: F1
automatic_scaling:
  max_idle_instances: 1
  min_pending_latency: 30ms
  max_instances: 1

handlers:
- url: /css
  static_dir: css
  secure: always

- url: /js
  static_dir: js
  secure: always

- url: /images
  static_dir: images
  secure: always

- url: /fonts
  static_dir: fonts
  secure: always

- url: /sitemap\.xml
  static_files: sitemap.xml
  upload: sitemap.xml
  secure: always

- url: /
  script: index.php
  secure: always

- url: /(.+\.php)$
  script: \1
  secure: always

- url: /.*
  script: 404.php
  secure: always

如果您确定所有静态文件都已在
app.yaml
中处理,并且根(
/
)已处理,则意味着剩下的任何内容都将转到脚本。因此,您的最终处理程序可能是:

- url: /(.+)
  script: \1.php
我会离开房间

- url: /(.+\.php)$
  script: \1
上面的处理程序,作为倒数第二个处理程序,因此一个人可以转到
/about
/about.php
,它将处理这两个问题

- url: /(.+)\.php$
  script: \1.php
也许可以将
.php
版本重定向到美化版,这样用户可以随着时间的推移进行调整,而不会得到
404

- url: /(.+)\.php$
  script: redirect.php
redirect.php:

<?php

    require_once __DIR__ . '/../vendor/autoload.php';

    $app = new Silex\Application();

    $app->get('/{scriptName}.php', function($scriptName) {
        header('Location: https://www.example.com/NewAbout/{$scriptName}');
        exit();
    })

?>

然后,您编写一个简单的404.php脚本页面,以显示正确的消息并发送
404
http响应。

通过“美化”,您是否请求
example.com/myimage
打开
/images/myimage.jpg
?或者
example.com/myscript
打开
/scripts/myscript.php
?或者?@GAEfan我很抱歉问题陈述不清楚。是的,基本上我要求的是请求
example.com/about
,而不是
example.com/about.php
。对于静态文件,我们可以忽略它。总之,我只需要美化以
.php
结尾的url,具有处理404并为其提供自定义404.php文件的能力。我正在尝试获得一个解决方案,该解决方案能够使用类似php脚本的
.htaccess
-很好地处理自定义404,而不是在
app.yaml
中执行,因为后者无法处理404+美化url。您建议的解决方案可以在stackoverflow的其他帖子中找到,这与我正在寻找的不完全相同。另外一个问题是内部链接。例如,当您单击一个菜单组件(例如服务)时,
标记将包含一个
href
链接到
Service.php
。在本例中,路由仍然包含
.php
是,
-url:/(.+)\.php$
处理该问题。它不会美化url,对吗?它只是能够处理为文件提供服务的路由,但url将包含
.php
我不理解。如果某人输入
/service.php
,您希望他们得到正确的响应吗?还是
404
- url: /(home|about|contact|page1|page99|etc)$ ## the pipe (|) means "or"
  script: \1.php


- url: /.*
  script: 404.php