宝塔面板lnmp架构,tp6框架网站伪静态

伪静态A

location / {

index index.html index.htm index.php;

try_files uri uri/ /index.php?s=uri\&args;

if (!-e $request_filename) {

rewrite ^/(.*) /index.php?s=/1 last;

}

client_max_body_size 5048m;

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';

add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization, ut, Accept, type';

if ($request_method = 'OPTIONS') {

return 204;

}

}

location ~ \.php$ {

fastcgi_pass unix:/tmp/php-cgi-74.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;

include fastcgi_params;

fastcgi_param PATH_INFO $fastcgi_path_info;

}

location /web {

try_files uri uri/ /web/index.html;

add_header Cache-Control 'no-cache, no-store, must-revalidate';

expires 0;

}

伪静态B

location / {

index index.html index.htm index.php;

#try_files uri uri/ /web/index.html;

if (!-e $request_filename){

rewrite ^(.*) /index.php?s=1;

}

client_max_body_size 5048m;

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Methods 'GET, POST, PUT, DELETE, OPTIONS';

add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization, ut, Accept, type';

if ($request_method = 'OPTIONS') {

return 204;

}

}

location /web{

try_files uri uri/ /web/index.html;

add_header Cache-Control 'no-cache, no-store, must-revalidate';

expires 0;

}

对比项 能工作的配置(配置A) 不能工作的配置(配置B) 差异影响
核心方法 try_files $uri $uri/ /index.php?s=$uri&$args; if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1; } try_files更稳定,是nginx原生指令;rewrite依赖正则匹配
URL路径处理 $uri(规范化后的URI) $1(正则捕获的原始内容) $uri会自动解码、移除多余斜杠;$1保持原始状态
查询参数处理 &$args 明确保留原始查询参数 未明确处理查询参数 配置A能正确传递?key=value参数,配置B可能丢失
前导斜杠 自动包含($uri/开头) 可能丢失($1从正则起点开始) 关键差异 :配置A生成s=/path,配置B生成s=path
PHP location块 包含fastcgi_param PATH_INFO $fastcgi_path_info; 缺失PATH_INFO配置 影响pathinfo模式的路由解析
配置结构 使用try_files单一指令 使用if+rewrite组合 try_files更高效,避免if指令的潜在问题
错误处理 nginx内部处理文件不存在 依赖-e文件检查 try_files性能更好,语义更清晰

结论:

配置B的主要问题是缺少前导斜杠和可能丢失查询参数。使用$request_uri或确保添加前导斜杠即可修复。

复制代码
if (!-e $request_filename){
    rewrite ^/(.*)$ /index.php?s=/$1 last;
}
相关推荐
旋生万物14 小时前
【终极实战】用Python从零“生成“一个宇宙:螺旋干涉模型的代码实现
开发语言·前端·人工智能·react.js·php·wpf
虎王物联14 小时前
Docker Compose编排物联网平台后端:Nginx+PHP-FPM+EMQX+InfluxDB一键部署实战
物联网·nginx·docker
艾醒(AiXing-w)17 小时前
LangChain 1.0 入门(三):稳定性双核心——重试机制+速率限速器参数详解与实战
开发语言·langchain·php
浪兎兎17 小时前
Nginx 笔记
运维·笔记·nginx
因_崔斯汀17 小时前
Nginx 开启 Gzip 完整配置
nginx
宸津-代码粉碎机18 小时前
FastUtil+AI多Agent实战:Java AI项目性能终极加速方案
java·服务器·开发语言·python·安全·php
练习时长两年半的RL练习生20 小时前
与AI对话后对 Actor-Critic 中 TD Target 的 a‘ 来源总结
开发语言·人工智能·php
Sagittarius_A*21 小时前
【好靶场】PHP反序列化绕过
web安全·信息安全·php·代码审计·反序列化绕过
孫治AllenSun1 天前
【系统安全】信息脱敏存储:场景、需求与实现方案详解
安全·系统安全·php
不灭的程序员阿澄1 天前
Nginx 容器化部署实战:SPA 路由、Cookie 透传与 WebSocket 全配置详解
websocket·nginx·状态模式