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



我正在为我的朋友开发一个静态网站,上面有一些轻量级的PHP代码。每个页面(例如 xxxxx.com/service.php(的 url 上都有一个.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

重定向.php:

<?php
require_once __DIR__ . '/../vendor/autoload.php';
$app = new SilexApplication();
$app->get('/{scriptName}.php', function($scriptName) {
header('Location: https://www.example.com/NewAbout/{$scriptName}');
exit();
})
?>

更新:要处理404,您需要一个有效URL的列表(就像在.htaccess中一样(来捕获。 您可以使用正则表达式执行此操作app.yaml. 然后,要处理404s,您使用一个 catchall 处理程序完成:

- url: /(home|about|contact|page1|page99|etc)$ ## the pipe (|) means "or"
script: 1.php

- url: /.*
script: 404.php

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

最新更新