宝塔面板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;
}
相关推荐
Lhappy嘻嘻2 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
2601_963771375 小时前
How to Scale Your WordPress Store Traffic in 2026
前端·php·plugin
右耳朵猫AI8 小时前
PHP周刊2026W28 | 安全更新、Laravel 13.18、Twig 3.28
开发语言·php·laravel
罗政9 小时前
PDF 批量合并工具:本地 AI 自动排序、识别正文日期与合同编号
数据库·pdf·php
糖果店的幽灵10 小时前
安全测试从入门到精通_网络基础与HTTPS
网络·https·php
2601_9637713711 小时前
WordPress SEO Guide: Boost Rankings Without Technical Jargon
前端·php
2501_9157167211 小时前
Nginx网关讲解_小白版
运维·nginx
日取其半万世不竭14 小时前
CS2 服务器搜不到?GSLT、端口和启动参数逐项检查
运维·服务器·php
360智汇云16 小时前
一次Redis超时引发的“冤案“
数据库·redis·php
ljs64827395116 小时前
Linux 网络常用命令与端口基础详解
linux·网络·php