GAE-PHP7-如何通过前端控制器传递GET参数

时间:2019-06-30 19:14:14

标签: php google-app-engine

PHP 7的Google Apps Engine现在需要一个“前控制器”。这些是我需要管理的URL:

  
      
  • /sitemap.xml
  •   
  • / app / myPHP?param1 = value&param2 = value2
  •   

我的源文件夹包含以下文件

  
      
  • index.php(前端控制器)
  •   
  • home.php
  •   
  • gen_sitemap.php
  •   
  • myPHP.php
  •   

所以我将前控制器(index.php)编码为

<?php
switch ($_SERVER['REQUEST_URI']) {
    case '/':
        require 'home.php';
        break;

    case '/sitemap.xml':
        require 'gen_sitemap.php';
        break;

    case '/app/myPHP':
        require 'myPHP.php';
        break;

    default:
        echo "no page " . time();
        break;
}

但是它不能正确解析URL:

  

https://myProject.appspot.com/-> home.php好

     

https://myProject.appspot.com/?p=“您好”->没有页面

     

https://myProject.appspot.com/sitemap.xml-> sitemap.php好的

     

https://myProject.appspot.com/sitemap.xml?p=“ h”->没有页面

     

https://myProject.appspot.com/app/myPHP-> myPHP.php好

     

https://myProject.appspot.com/app/myPHP?p=“ h”->没有页面

我该如何修复此前置控制器? 谢谢你,

1 个答案:

答案 0 :(得分:0)

切换条件可能无法正常工作,因为它正在比较“ REQUEST_URI”。 PHP的SERVER全局变量键REQUEST_URI可能具有查询字符串的完整路径。而是尝试键“ SCRIPT_NAME”或“ PATH_INFO”

建议:首先检查$ _SERVER变量中所有可用的键值,然后选择用于添加切换命令的键值。

示例:print_r($ _ SERVER);作为代码的第一行

参考:https://www.php.net/manual/en/reserved.variables.server.php