重新映射" .php!foo = bar" to" php?foor = bar"在Google App Engine PHP main.yaml

时间:2015-10-23 06:27:56

标签: php google-app-engine yaml

我需要重新映射从*.php!foo=bar*.php?foo=bar的所有请求 在Google App Eninge main.yaml

我试过了:

- url: /(.*)php5!(.*)$
  script: \1php5?\2

但它只会导致错误。 问题源于"?"。

即使是

script: \1php5?foo=bar

确实会导致错误。

1 个答案:

答案 0 :(得分:1)

您将无法将!(.*)部分重新映射到app.yaml内的查询字符串,因为应用引擎sdk会将script:参数视为include()的文件}和include("somefile.php5?foo=bar");仅在php文件名包含查询字符串时才有效。

您可以尝试这样的事情:

app.yaml 将所有!个请求路由到单个php脚本

- url: /(.*)php5!(.*)$
  script: router.php

router.php !翻译为?然后执行301重定向

<?php
$url = implode('?', explode('!', $_SERVER['PATH_INFO'], 2));
// 301 Moved Permanently
header("Location: {$url}", true, 301);