Как запустить собственное php-приложение из подкаталога CI-приложения в Google App Engine Standard? - PullRequest
0 голосов
/ 31 августа 2018

Я немного озадачен тем, как настроить app.yaml, чтобы выполнить свою работу. Ранее у меня было то же самое приложение codeigniter, работающее в другом месте с подкаталогом /support, обслуживающим пользовательское приложение службы поддержки php. У него не было проблем. Добрый старый апач подал его без проблем.

Теперь я хочу, чтобы над GAE работало то же самое! Это мой app.yaml

application: <NAME>
version: 1
runtime: php55
api_version: 1
threadsafe: yes

handlers:

- url: /assets
  static_dir: assets

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico

- url: /support/.*
  script: index.php

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

Просто чтобы убедиться, что все файлы правильно маршрутизируются после того, как кто-то предоставит мне решение. Вот структура каталогов службы поддержки (она называется hesk) -

enter image description here

Мне нужно решение с подстановочными знаками, чтобы /support безупречно работал с подпапками и всем ... также нужно было определить статические файлы. как вы можете видеть, они разбросаны повсюду .. не совсем удобно, но это так! я плох в регулярных выражениях. Поэтому, пожалуйста, помилуй меня.

Обновление: Я добавил немного обновленный app.yaml ... теперь все php-скрипты из корневого каталога поддержки и подкаталогов 1-го уровня работают

- url: /support/(.*)/(.*)\.php$
  script: support/\1/\2.php

- url: /support/(.*)\.php$
  script: support/\1.php

Но проблема в том, что в этой вещи есть множество подпапок. см. этот снимок ниже папки support / inc. как справиться с этим? я должен вручную поставить пару url-script для всего возможного количества уровней sub-dir? Это так расстраивает!

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Решение: Спасибо, GAEfan. Я немного смешал ваши идеи и, наконец, это необходимые обработчики. Теперь он работает отлично!

#for all the static files residing at support root or at any other level
- url: /support/(.*\.(htm$|css$|js$|ico$|jpg$|png$|gif$))$
  static_files: support/\1
  upload: support/.*\.(htm$|css$|js$|ico$|jpg$|png$|gif$)$
  application_readable: true

#for all the php files running at support root or at any other level
- url: /support/(.+)\.php
  script: support/\1.php

#for using index.php at support root or at any other level
- url: /support/(.*)
  script: support/\1/index.php

P.S: приведенный ниже обработчик может запускать index.php с любого другого уровня, но не поддерживает root

- url: /support/(.+)
  script: support/\1/index.php
0 голосов
/ 01 сентября 2018

Вы отправляете каждый звонок на - url: /support/.* на index.php. То, что вы хотите, это регулярное выражение для отправки в соответствующий скрипт:

- url: /support/(.+).php
  script: support/\1.php

ПРИМЕЧАНИЕ: ваши app.yaml и index.php расположены в каталоге support. Вам понадобится app.yaml в корне, или вы не сможете получить доступ к файлам вне каталога поддержки. support является корнем этого приложения?

Помните: URL относятся к app.yaml файлу

Для файлов на корневом уровне вы должны использовать:

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

Вы захотите поместить статические файлы в статический каталог и использовать:

- url: /static
  static_dir: static

и получить доступ к файлам, используя, например: /static/hesk_javascript.js

ОБНОВЛЕНИЕ 2 Для обработки статических файлов с помощью регулярных выражений:

- url: /support/(.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg))$
  static_files: support/\1
  upload: support/.*\.(ico|jpg|jpeg|png|gif|woff|ttf|otf|eot|svg)$
  application_readable: true
...