Я пытаюсь удалить расширение файла в адресе из всех *.php
файлов на моем сайте. Например, если пользователь посещает mysite.com/about.php
я хочу, чтобы URL-адрес читал mysite.com/about
.
Вот мой app.yaml
:
application: mysite version: 1 runtime: php55 api_version: 1 handlers: # Static files - url: /images/* static_dir: images - url: /css/* static_dir: css - url: /js/* static_dir: js # Routing - url: /services(.*) script: services.php - url: /portfolio(.*) script: portfolio.php - url: /project(.*) script: project.php - url: /about(.*) script: about.php - url: /contact(.*) script: contact.php - url: /(.*) script: index.php
Как я могу достичь этого в GAE?
Если все, что вам нужно сделать, это выполнить этот тип маршрутизации, вы можете использовать это:
application: mysite version: 1 runtime: php55 api_version: 1 handlers: # Static files - url: /images/* static_dir: images - url: /css/* static_dir: css - url: /js/* static_dir: js # Special case, route requests for the root document - url: / script: /index.php # If the request ends in [something].php, route to that file directly - url: /(.+\.php)$ script: /\1 # Map all other requests to scripts of the same name # so that, eg, /thispage (or /thispage/) routes to /thispage.php - url: /(.*?)/?$ script: /\1.php
NB, однако, используя этот метод, вы не сможете обрабатывать 404 ошибки (хотя они, похоже, не обрабатываются в app.yaml, предоставленном в вопросе). Обработчики ошибок в вашем приложении app.yaml не будут работать на 404, потому что они будут пинать только в том случае, если они не могут соответствовать любому предоставленному вами маршруту.
Итак, если вы хотите обрабатывать 404 ошибки и т. Д., То что вы должны сделать, это выполнить маршрутизацию внутри php-скрипта, например:
-url: /(.*) script: /routes.php
и внутри routes.php проверяют переменную $ _SERVER ['REQUEST_URI'], чтобы увидеть, какая страница была запрошена, и соответствующим образом обслуживать соответствующий контент.
Редактировать: благодаря @Avinash Raj для очистки регулярного выражения