一个很简单的nginx重写规则, 完全看不明白为什么重写到正确的路径的
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
就这个重写规则, 不知道为什么会重写到 test.php
实际效果与 www.domain.com/test.php?s=/a/b 效果一致
我尝试多个版本nginx, 无法重现.
nginx -T
未看到有什么特殊设置.
我的开发环境, 为了能够打开这个url http://www.domain.com/test.php/a/b
, 做了如下设置
location /test.php/ {
rewrite ^/test.php(.*)$ /test.php?s=$1 last;
}
其他同事并无任何特殊设置
这是 test.php
代码
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// [ 后台入口文件 ]// 使用此文件可以达到隐藏admin模块的效果
// 建议将admin.php改成其它任意的文件名,同时修改config.php中的'deny_module_list',把admin模块也添加进去
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 判断是否安装FastAdmin
if (!is_file(APP_PATH . 'admin/command/Install/install.lock'))
{
header("location:./install.php");
exit;}
// 加载框架引导文件
require __DIR__ . '/../thinkphp/base.php';
// 绑定到admin模块
\think\Route::bind('admin');
// 关闭路由
\think\App::route(false);
// 设置根url
\think\Url::root('');
// 执行应用
\think\App::run()->send();
推荐文章: