在Google App Engine Standard上运行php网站不会路由到文件夹和文件

iq3niunx  于 11个月前  发布在  PHP
关注(0)|答案(1)|浏览(89)

我正试图将我们的网站从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这是位于子文件夹测试.但我怀疑这将是我自己的网站去的方式.

thtygnil

thtygnil1#

1.你说得对,你需要一个前端控制器(ref)。谷歌推荐使用像Laravel,Symfony或Slim这样的框架。
1.如果你更愿意使用你的index.php文件(而不是框架),并且你也有很多子路径(子文件夹),你应该编写你的前端控制器代码来使用正则表达式来检测路由。
这是来自Google的一个示例,其用例与您的用例类似-用户登陆到主页(index.php),该主页具有将用户带到站点其他部分的链接

相关问题