Google App Engine PHP72升级后URL分组失效问题求助
PHP72环境下app.yaml URL路由失效问题解决
问题描述
在PHP55环境中,使用对应app.yaml配置可将/api/manage、/api/edit、/api/user/add等所有以/api开头的路径转发至/api/api.php,但升级到PHP72后,新配置无法实现该功能。
PHP55有效配置
service: default runtime: php55 handlers: - url: /api((/$)|(/[^/]+(/$)?)*) script: /api/api.php secure: always
PHP72失效配置
service: default runtime: php72 handlers: - url: /api/(.*?)/(.*) script: /api/api.php secure: always
问题原因
PHP72配置中的正则表达式/api/(.*?)/(.*)存在逻辑缺陷:它要求/api后必须包含至少两个层级的路径(比如/api/a/b),但像/api/manage(仅一个层级)、/api/或/api这类路径都无法匹配,导致路由失效。
解决方案
调整URL匹配的正则表达式,使其覆盖所有以/api开头的路径,和PHP55配置的匹配逻辑保持一致。推荐使用以下配置:
service: default runtime: php72 handlers: - url: /api(/.*)? script: /api/api.php secure: always
配置说明
/api(/.*)?的正则逻辑:- 匹配
/api本身 - 匹配
/api/ - 匹配
/api后跟随任意路径的情况(如/api/manage、/api/user/add等)
- 匹配
- 完全覆盖了原PHP55配置支持的所有URL场景,确保路由转发正常。
内容的提问来源于stack exchange,提问作者Nasir
相关产品推荐
相关产品推荐

