美化谷歌应用程序引擎PHP静态网站上的URL
我正在用一些简单的PHP代码为我的朋友开发一个静态网站。每个页面的url上都有一个.php,例如xxxxx.com/service.php。我做了一些研究,发现在美化谷歌应用程序引擎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
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