Google App Engine app.yaml для статических файлов php не загружается

Я новичок в GAE, я могу запускать приложение локально, но при просмотре GAE оно жалуется на строку 1 script.js "Неожиданный токен ‹"

Вот приложение.yaml

application: randomappname
version: 1
runtime: php
api_version: 1

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

- url: /(.*\.css)
  mime_type: text/css
  static_files: static/\1
  upload: static/(.*\.css)

- url: /(.*\.js)
  mime_type: text/javascript
  static_files: static/\1
  upload: static/(.*\.js)

# image files
- url: /(.*\.(bmp|gif|ico|jpeg|jpg|png))
  static_files: static/\1
  upload: static/(.*\.(bmp|gif|ico|jpeg|jpg|png))

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

Файлы указаны в теге head

  <head>    
    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/css/bootstrap-combined.min.css" rel="stylesheet">    
    <script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.js"></script>
    <link rel="stylesheet" href="/static/main.css" />
    <script src="/static/script.js"></script>
  </head>

Файлы расположены так:

index.php
api.php
app.yaml
/static/main.css
/static/script.js

Изменить:

Я обновил app.yaml до этого:

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

- url: /static
  static_dir: static

- url: /.*
  script: index.php

Оно работает


person Annie C    schedule 11.06.2014    source источник


Ответы (1)


Ваша цепочка - url: /.* должна быть последней. Он ловит все запросы. Неожиданный < — это первый символ в index.php, который является ответом, который вы получаете при запросе script.js.

Затем мы можем очистить ваш статический файл конфигурации.

person GAEfan    schedule 11.06.2014
comment
Спасибо, я обновил app.yaml, см. правку в моем исходном сообщении. Теперь он может найти js, но не может найти css (что меня не очень беспокоит). однако, похоже, он не может найти файл api.php. - person Annie C; 12.06.2014
comment
Ваш app.yaml верен. Как вы звоните /api.php? - person GAEfan; 12.06.2014
comment
узнал, что вызывается api.php, php вызывает сторонний HTTP GET api, который возвращает null. однако это работает локально. Поэтому я думаю, что GAE по какой-то причине блокирует вызов HTTP GET. - person Annie C; 13.06.2014
comment
$ означает, что это конец URL-адреса. Ваша строка запроса делает это регулярное выражение несоответствующим. Попробуйте: - url: /(.+\.php)(\?*) или - url: /(.+\.php)(.*) - person GAEfan; 13.06.2014
comment
Спасибо. Я изменил его на - url: /(.+\.php)(.*) результат тот же. Я вижу, что вызывается api.php, и параметры передаются. Я вызываю api eBay внутри api.php, он возвращает значение null, как будто вызов не прошел. Я должен сделать отдельный пост об этом. Что касается этого вопроса относительно app.yaml, вы помогли мне решить его, и еще раз спасибо. - person Annie C; 13.06.2014