宝塔面板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;
}
相关推荐
凡尘——雨落凡尘4 小时前
PHP 线上十大隐形故障复盘:90% 的网站卡顿、502、雪崩,都是这些细节导致的
redis·nginx·php·session
fengci.6 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
Deryck_德瑞克6 小时前
【Nginx】配置差异分析
服务器·前端·nginx
JSON_L8 小时前
Fastadmin后台使用validate进行表单验证
php·fastadmin
用户41302948834612 小时前
从 0 到 1 用 PHP 实现 Cron 表达式解析器(附完整源码)
php
学者猫头鹰13 小时前
Nginx零基础学习手册
nginx
JSON_L14 小时前
Fastadmin关联查询报错 method not exist:think\db\Query->XXX
php·fastadmin
DFT计算杂谈1 天前
SCIENTIFIC REPORTS 非 van der Waals可调二维磁性材料设计平台
开发语言·php
凡尘——雨落凡尘1 天前
PHP实战复盘:高并发限流、防刷、验证码、会话安全、CSRF防护导致站点稳定性与安全加固实战
php·csrf 防护·csrf 攻击
2601_965798471 天前
Bostami Portfolio Template Review: Speed, Code & SEO Test
php