请教一个nginx多入口伪静态的问题

@Ta 2020-03-14发布,2020-03-14修改 8882点击

目前接手了一个遗留项目,所使用的框架是thinkphp3,原来采用的是多入口的模式:
前台使用api.php ,后台入口是 manage.php ,
所使用的环境是php5.6是正常的,但是我切换到php7.3以后(有部分类库依赖php7.2.9+),后台的伪静态总是有问题。
期望前台不显示api.php,后台通过${host}/manage.php/xxx来访问。

所使用的代码如下:

location / {
			if (!-e $request_filename) {
				rewrite ^/manage.php?(.*)$ /manage.php?s=$1 last;
				rewrite ^(.*)$ /api.php?s=/$1 last;
				break;
			} 
		}

不知道哪里出了问题。

有一个测试很奇怪,我把第一条中的manage.php改成manage.xyz什么的都可以,好像就是不能出现.php
@老虎会游泳

红米Note4超高配版(银色)

回复列表(3|隐藏机器人聊天)
  • @Ta / 2020-03-14 / /

    打开nginx的rewrite日志
    http://www.voidcn.com/article/p-tvgcajmf-ck.html

    PHP中:

    phpinfo();
    exit();
    

    然后注意观察$_SERVER一节,看看不同版本在rewrite之后有什么区别。

    最后,你并没有展示你所遇到的现象,只说你有问题,这就需要我们猜测了。那我可以猜你得到了500错误,原因是PHP代码版本不兼容。这样的话,你应该打开PHP的错误日志然后去修复不兼容代码。

  • @Ta / 2020-03-14 / /
    @老虎会游泳,总是有些人新号注册上来就是广告,加一个用户注册24小时之内只可以回复,不可以发帖
  • @Ta / 2020-03-15 / /

    @老虎会游泳,本来想截图问题的表现,但是由于项目是线上项目,在紧张的调试中,就又给恢复原样了。

    最后发现问题所在了,使用的是lnmp的配置,其中启用php73的配置文件中的php规则把 rewrite ^/manage.php?(.*)$ /manage.php?s=$1 last;给覆盖掉了,所以路径中带php的都不会起作用。。。
    红米Note4超高配版(银色)

添加新回复
回复需要登录