Если вы уверены, что все ваши статические файлы уже обработаны в 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 ответ.