Украсьте URL на статическом веб-сайте Google App Engine PHP - PullRequest
0 голосов
/ 06 сентября 2018

Я занимаюсь разработкой статического веб-сайта для моего друга с легким ванильным PHP-кодом. На каждой странице есть .php, например, xxxxx.com/service.php. Я провел некоторое исследование и обнаружил, что настройка app.yaml не является методом элегантности, поскольку он не будет корректно обрабатывать ошибку 404. Я думаю, что могу создать специальный PHP-файл, принимающий запрос, заканчивающийся на .php из app.yaml, и обрабатывать каждый запрос как .htaccess. Из-за недостатка знаний PHP я не могу создать код в файле. Пожалуйста, просветите меня о процессе.

Ниже мой app.yaml

runtime: php55
api_version: 1
instance_class: F1
automatic_scaling:
  max_idle_instances: 1
  min_pending_latency: 30ms
  max_instances: 1

handlers:
- url: /css
  static_dir: css
  secure: always

- url: /js
  static_dir: js
  secure: always

- url: /images
  static_dir: images
  secure: always

- url: /fonts
  static_dir: fonts
  secure: always

- url: /sitemap\.xml
  static_files: sitemap.xml
  upload: sitemap.xml
  secure: always

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

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

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

1 Ответ

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

Если вы уверены, что все ваши статические файлы уже обработаны в app.yaml, а root (/) обработан, это означает, что все, что осталось, попадет в скрипт. Итак, ваш последний обработчик может быть:

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

Я бы оставил

- url: /(.+\.php)$
  script: \1
Обработчик

над ним, как предпоследний обработчик, поэтому человек может перейти к /about или /about.php, и он будет обрабатывать оба.

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

Возможно, перенаправить версию .php на украшение, чтобы пользователи со временем адаптировались, не получив 404:

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

redirect.php:

<?php

    require_once __DIR__ . '/../vendor/autoload.php';

    $app = new Silex\Application();

    $app->get('/{scriptName}.php', function($scriptName) {
        header('Location: https://www.example.com/NewAbout/{$scriptName}');
        exit();
    })

?>

Обновление: Чтобы обработать 404 s, вам нужен список (как вы бы в .htaccess) действительных URL-адресов для ловли. Вы можете сделать это с помощью регулярных выражений в app.yaml. Затем для обработки 404 s вы заканчиваете обработчиком catchall:

- url: /(home|about|contact|page1|page99|etc)$ ## the pipe (|) means "or"
  script: \1.php


- url: /.*
  script: 404.php

Затем вы пишете простую страницу сценария 404.php для отображения правильного сообщения и отправляете 404 http ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...