我正试图将我们的网站从Linux虚拟机(也在谷歌)迁移到谷歌应用程序引擎标准环境。
当我部署应用程序并测试它时,主页面(index.php)工作正常,但当我尝试转到其他文件时,例如/somefolder/somefile. php,它就不工作了。它只显示index.php,但没有图片等。
我搜索了互联网,我发现这可能是由于没有前端控制器(?)
我的app.yaml文件如下:
service: nameoftheapp
runtime: php83
handlers:
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg))$
static_files: \1
upload: .+\.(gif|png|jpg)$
- url: /(.+\.php)$
script: auto
- url: /.*
script: auto
字符串
我的index.php是:
<?php
// android store
if (preg_match('#android#i', $_SERVER ['HTTP_USER_AGENT'])) {
header('Location: market://details?id=nl.myapp');
exit;
}
// ios
if (preg_match('#(iPad|iPhone|iPod)#i', $_SERVER ['HTTP_USER_AGENT'])) {
header('Location: https://apps.apple.com/us/app/myapp/id973246494');
exit;
}
echo "<html> <head> </head> <body>";
echo '<center><p><br><p><br>Sometext</center> <p>';
echo '<center> some more text.</center> <p>';
echo "<center> <img width='800' src='images/logo_GW_forweb.jpg'</center> <p>";
echo "<center> yet some more text</center> <p>";
echo "</body>";
?>
型
该index.php作为一个简单的着陆页为用户重定向到应用程序的应用商店.至于这去,这工作得很好.也标志,它驻留在一个子文件夹显示.
但我自己想去https://mywebsite.nl/somefolder/somefile.php
这部分不起作用。这可以通过设置正确的app.yaml来解决吗(我确实有10个以上的.php文件,其中一些有自己的.php文件,总共有100多个)
我还需要别的东西吗?我希望app.yaml能有一个设置,把所有的reguests路由到正确的地方。
我做了一个测试应用程序,看看如何让它工作。这一个工作,但我怀疑这是要走的路。
app.yaml文件声明:
runtime: php83
service: test
handlers:
- url: /.*
script: index.php
型
索引指出:
<?php
$requestUri = $_SERVER['REQUEST_URI'];
// Hier kun je logica toevoegen om het verzoek te routeren naar de juiste actie/controller
if ($requestUri === '/test/test.php') {
require 'test/test.php';
} elseif ($requestUri === '/root.php') {
require 'root.php';
} else {
// Standaard HTML-tekst als de URI niet overeenkomt met specifieke routes
echo "<!DOCTYPE html>";
echo "<html lang=\"en\">";
echo "<head>";
echo " <meta charset=\"UTF-8\">";
echo " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">";
echo " <title>Test App</title>";
echo "</head>";
echo "<body>";
echo " <h1>Hallo dit is een test</h1>";
echo " <p>Welkom bij de PHP-testapplicatie op Google App Engine!</p>";
echo " <p><a href=\"test/test.php\">Ga naar test.php</a></p>";
echo " <p><a href=\"root.php\">Ga naar root.php</a></p>";
echo "</body>";
echo "</html>";
}
?>
型
这一个工程.我可以访问root.php以及test.php这是位于子文件夹测试.但我怀疑这将是我自己的网站去的方式.
1条答案
按热度按时间thtygnil1#
1.你说得对,你需要一个前端控制器(ref)。谷歌推荐使用像Laravel,Symfony或Slim这样的框架。
1.如果你更愿意使用你的
index.php
文件(而不是框架),并且你也有很多子路径(子文件夹),你应该编写你的前端控制器代码来使用正则表达式来检测路由。这是来自Google的一个示例,其用例与您的用例类似-用户登陆到主页(
index.php
),该主页具有将用户带到站点其他部分的链接