GAE app.yaml - получить скрипт и параметр из пользовательского короткого URL?

Мой главный вопрос: возможно ли это?

Мое текущее приложение mylongnamedapp.com

У меня тоже есть shortna.me (например).

Я хочу реализовать функцию коротких ссылок для сохранения символов в SMS-сообщениях, чтобы пользователи могли нажимать на такую ​​ссылку http://shortna.me/a/f423f

Сейчас, shortna.me решил бы mylongnamedapp.com поэтому я мог сделать любое из следующего:

  1. Есть сценарий под названием a.php и иметь app.yaml 'декодировать' http://shortna.me/a/f423f чтобы сценарий a.php с параметром f423f?
  2. Есть папка под названием aи app.yaml должен запустить скрипт по умолчанию и запустить его с параметром f423f?

Возможно ли что-либо из перечисленного выше с app.yaml в Google App Engine?

2 ответа

Решение

Если я правильно понял ваш вопрос, вы хотите, чтобы приложение App Engine перенаправляло запросы на /a/some_value к сценарию a.php с параметром some_value,

Здесь у вас есть небольшой рабочий пример, который вы сможете адаптировать к вашему сценарию:

app.yaml

runtime: php55
api_version: 1

handlers:
- url: /a/.*
  script: a.php

a.php

<html>
  <body>
    <?php
    $str = $_SERVER[PATH_INFO];
    $str2 = explode("/",$str)[2]; 

    echo "This function is using the parameter: " . $str2;
    ?>
  </body>
</html>

Затем вы можете выполнить этот код с помощью команды:

dev_appserver.py app.yaml --php_executable_path <PATH_TO_PHP-CGI>

Вы увидите, что приложение выполняет a.php Сценарий в соответствии с обработчиками в app.yamlи сопоставление конца запроса с параметром, с которым нужно работать.

Получив ответ от @dsesto, я сделал еще один шаг вперед и убрал необходимость в скрипте /a каталог. Так что вместо http://shortna.me/a/f423f, Я могу использовать http://shortna.me/f423f,

Мое новое направление будет видеть, как я использую 6-значный буквенно-цифровой код. Поскольку app.yaml использует регулярные выражения, вот что я сделал:

- url: /[a-zA-Z\d]{6}
  script: a.php
  secure: always

Так что все, что соответствует регулярному выражению [a-zA-Z\d]{6} будет отправлен a.php, Но у меня действительно есть обработчик для mylongnamedapp.com/signup ("регистрация" - 6 символов) - пока этот обработчик находится над этим регулярным выражением, он работает. Таким образом, полный результат выглядит так:

- url: /(.+\.php)$
  script: \1
  secure: always

- url: /signup
  script: signup.php
  secure: always

- url: /[a-zA-Z\d]{6}
  script: test.php
  secure: always

- url: /.*
  script: home.php
  secure: always

Первый обработчик выглядит после определенных страниц, таких как login.php,

Второй специфичен для регистрации, потому что URL симпатичный и не использует .php в маркетинговом материале.

Третий ответ на этот вопрос.

И последний - универсальный способ отправки несоответствующих запросов на домашнюю страницу по умолчанию.

Другие вопросы по тегам