Intereting Posts

Параметры сценариев PHP App App app.yaml

В моем приложении GAE PHP app.yaml я пытаюсь это сделать:

application: myapp version: 1 runtime: php api_version: 1 threadsafe: yes handlers: - url: /sitemap.xml static_files: sitemap.xml upload: /sitemap\.xml - url: /MyOneLink script: /myDynamicContent.php?myparam=hardcoded_value_1 - url: /MySecondLink script: /myDynamicContent.php?myparam=hardcoded_value_2 

поэтому можно просмотреть http://example.com/MyOneLink и получить результат динамического php (который зависит от жестко заданного значения myparam)

проблема в том, что при просмотре ничего не отображается. Есть идеи ?

Кстати, вы можете понять, почему я также публикую «sitemap.xml»: он будет использоваться для раскрытия всех myLinks

спасибо, диего

Solutions Collecting From Web of "Параметры сценариев PHP App App app.yaml"

Остальные ответы были бы точными для конечного числа значений, жестко закодированных (как показано в вопросе).

Но если вы хотите работать с действительно динамической версией с бесконечными возможностями ценностей, вы можете подумать о следующем ( не работает ):

 - url: /MyLinks/(.*)/? script: /myDynamicContent.php?myparam=\1 

Вышеуказанное не работает. Вы можете решить проблему, используя простой PHP- хак .

Обновите приложение app.yaml :

 - url: /MyLinks/.* script: /myDynamicContent.php 

В myDynamicContent.php получите значение $_SERVER['REQUEST_URI'] и проанализируйте эту строку, чтобы получить заданное значение для myparam .

Обновить! Более элегантный метод:

 <?php $requestURI = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); $requestURI = explode("/", $requestURI); $myparam = $requestURI[2]; echo $myparam; ?> 

Поскольку parse_url всегда получает информацию о пути, мы можем безопасно зависеть от жестко заданных индексов. Массив, созданный /MyLinks/value_1 для строки /MyLinks/value_1 будет содержать пустую строку с индексом 0 , MyLinks в 1 , value_1 в 2 и так далее.

Оригинальный метод clunkier:

 <?php $requestURI = explode("/", $_SERVER["REQUEST_URI"]); for ($i = 0; $i < count($requestURI); $i++) { if (strcmp($requestURI[$i], "MyLinks") == 0) { $myparam = $requestURI[$i + 1]; break; } } echo $myparam; ?> 

Совет. Вы можете использовать одинарные кавычки вместо двойных кавычек.

Вы не можете передавать параметры в параметре «script:».

Один из способов исправить это – два имеют два сценария «ввода», которые затем включают ваш основной сценарий, например:

 <?php $_GET['myparam'] = 'hardcoded_value_1'; require('main_script.php'); 

Которые вы можете ссылаться в app.yaml

Скорее всего, это самый быстрый способ заставить ваш существующий код работать (хотя есть лучшие способы сделать это).

прочитав официальный документ https://cloud.google.com/appengine/docs/php/config/mod_rewrite, я сделал следующее:

 <$php $path = parse_url($_SERVER['PATH_INFO'], PHP_URL_PATH); if ($path == '/path') { } ?>