宝塔面板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;
}
相关推荐
niucloud-admin6 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
ESDWAN7 小时前
企业网络监控应该监测哪些目标?网关、网络节点还是业务系统?
服务器·网络·php
呆呆虫128 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
中科三方10 小时前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
开源必胜10 小时前
Socket、异步非阻塞 I/O 与 NGINX、Netty 模型
网络·tcp/ip·nginx
云边云科技_云网融合12 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
李纲明14 小时前
WordPress 媒体库上传图片失败:先核 PHP 体积与目录权限,再查安全插件与对象存储
php·上传·wordpress·媒体库·devdiy
海域云SeaArea_14 小时前
Windows Server 2008 R2 从零安装 IIS7.5(二):php.ini 配置
开发语言·windows·php
niucloud-admin16 小时前
NIUCLOUD PHP SAAS上门家政使用文档:服务保障
java·开发语言·php
honsor17 小时前
用 Grafana 做温湿度异常检测:从阈值告警到趋势预测
数据库·mysql·php