nginx php try files,nginx 中的 rewrite 和 try_files

问题描述: 本地yii2, 使用了路由优化prettyUrl,

nginx配置:

try_files $uri $uri/ /index.php?$args;

没有用rewrite

当访问

http://www.warpapi.com:83/credit-token/user-auth-key-valid/1121213

使用$_SERVER[‘QUERY_STRING’] = '';

而测试环境使用的配置是

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

没有使用try_files

当访问:

http://www.warpapi.com:83/credit-token/user-auth-key-valid/1121213

则$_SERVER[‘QERY_STRING’] = '/credit-token/user-auth-key-valid/1121213'

导致签名时, 两者的解密结果不一致

———————————————————————————–

看YII2文档的时候发现推荐的Nginx配置参数是:

location / {

# Redirect everything that isn't a real file to index.php

try_files $uri $uri/ /index.php$is_args$args;

}

location ~ \.php$ {

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_pass 127.0.0.1:9000;

#fastcgi_pass unix:/var/run/php5-fpm.sock;

try_files $uri =404;

}

而本地使用的nginx的vhost配置是

rewrite ^/(.*)$ /index.php/$1 last;

rewrite是类似Apache的配置

这里的配置也比较的容易理解,但是为啥官方的推荐要推荐try_files呢

最后找到了一个答案:Nginx一般都是配合fpm来使用的,

如果使用rewrite的时候会把所有的文件都重定向然后发送给php-fpm包括了静态文件,所以现在已经不推荐这样的配置了.

———————————————————————————–

原生的url样式:

http://www.xxx.com/index.php?name=will&age=20

伪静态的样式:

http://www.xxab.com/hello/world.html

http://www.xxx.com/content/23223.html

伪静态的优点:

(1), url地址比较友好,看着爽,更有说服务力

(2), 如果是一个内容站,有利于seo优化

(3), 有效的防止sql注入,让别人不知道你真实的url地址

缺点:

与原生的url比较在性能上,不如原生的url,简单的说伪静态就是在服务器上又进行了一层url解析,消耗服务器资源。但总体利大于弊的.

rewrite 语法格式:

rewrite   [regex]                  [replacement]      [flag];

url正则表达式        替换真实url          标记(last,break)

如: rewrite ^/(.*) /index.php?r=$1 last;

try_files $uri $uri/ /index.php?$args;

$uri  这个是nginx的一个变量,存放着用户访问的地址,

比如:http://www.xxx.com/index.html, 那么$uri就是 /index.html

$uri/ 代表访问的是一个目录,比如:http://www.xxx.com/hello/test/    ,那么$uri/就是 /hello/test/

完整的解释就是:try_files 去尝试到网站目录读取用户访问的文件,如果第一个变量存在,就直接返回;

不存在继续读取第二个变量,如果存在,直接返回;不存在直接跳转到第三个参数上。

还要try_files干什么呀,直接使用rewrite不就可以了吗?

答:不可以,因为rewrite这个指令把所有请求过来的url地址,都与htaccess文件中的正则地址进行一次匹配,这样的话,静态的url地址也进行了一次匹配,比如http://xxxx.com/aa.png,这个地址是不需要重写的,但是rewrite也进行了一次匹配,这就浪费服务器资源,影响执行效率。而我们真正需要匹配的,其实都是一些动态url地址,如果我说这么多,你还不明白的话,可以打印日志查看.

—————————————————————————

Post Views:

773

【机器人学】常用的小车底盘运动学模型推导(附C++代码) 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对小车底盘运动学模型介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容对于小车的分析,仅仅考虑XY轴的线速度和Z轴的角速度,不考虑和横滚和俯仰的速度,【防盗标记–盒子君hzj】也不考虑Z轴的高度变化【即:车底盘的运动可以用三个独立变量来描述:x轴平动、y轴平动、yaw轴转动】 阅读详情

相关推荐

图形学常见概念小结

前言:本文记录《unity shader入门精要》和openGL相关学习过程中一些学习要点; 文章目录PBR流程渲染管线细分着色器的底层实现,应用原理常见的色调映射算法openGl和Direct X的区别PBR流程和URP渲染管线Camera loop(剔除)MVP矩阵变换光线追踪前向渲染和延迟渲染shader和材质的区别bloom原理后处理的理解高斯模糊实现原理图像处理中的边缘检测算子 PBR流程 小结:一套基于自然界微平面理论、能量守恒、菲涅尔反射、线性空间等的科学理论所实现的基于物理的渲染系统,包含一

小谁的博客 1163

nginx php try files,nginx中的try_files指令解释

try_files 指令的官方介绍比较让人摸不着头脑,经网上一番总结查看,try_files最核心的功能是可以替代rewrite。try_files语法: try_files file ... uri 或 try_files file ... = code默认值: 无作用域: server locationChecks for the existence of files in orde...

weixin_39875419的博客 840

深入解读ES8388寄存器:从录音到播放,如何用代码控制这颗音频Codec

本文深入解析ES8388音频编解码器的寄存器设置,从录音到播放的完整控制流程。详细介绍了寄存器架构、录音通道配置、播放通道优化以及直通(Bypass)模式的高级应用,帮助开发者通过代码精准控制这颗高性能音频Codec,解决实际开发中的音质问题。

weixin_30275415的博客 550

nginx 访问图片404_nginx配置文件参数try_files详解

例子 1location / { try_files $uri $uri/ /index.php?$query_string;}当用户请求 http://localhost/example 时,这里的 $uri 就是 /example。 try_files 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $root 是项目代码安装目录)的文件,就直接把这个文件的内容发送...

weixin_39759182的博客 654

直流电源EMI滤波器设计实战:从器件选型到PCB布局的完整指南

本文提供了一份直流电源EMI滤波器的完整实战设计指南。针对EMI噪声超标问题,文章深入剖析了差模与共模噪声的抑制原理,详细讲解了从电路拓扑、核心器件(如X/Y电容、共模电感)的选型计算,到决定性能成败的PCB布局艺术。重点强调了低阻抗路径、干净接地及输入输出隔离等关键布局原则,并分享了常见的调试坑点与排查方法,旨在帮助硬件工程师设计出真正有效的滤波器,确保电源系统通过EMC测试。

q9r0s的博客 642

从零构建:openEuler WSL下的ARM交叉编译工具链自动化部署方案

本文详细介绍了在openEuler WSL环境下使用Ansible自动化部署ARM交叉编译工具链的方案。通过编写Ansible角色和Playbook,实现从基础环境配置到工具链安装、环境变量设置的一键部署,大幅提升嵌入式开发效率。方案支持多种ARM架构,并扩展了QEMU仿真、VS Code远程开发等实用功能,是嵌入式开发者的高效解决方案。

h3i4j的博客 383

nginx 站点使用try_files配置案例

支持thinkphp 伪静态 或者 URL链接是 index.php?s=xxxxx的,当然也可以改成你自己,只要修改try_files $uri $uri/ /index.php?s=$uri&$args;此处就可以了文件名lanmps.com.conf 风.fox 内容如下server { #侦听80端口 listen 80; #定义使用 lanmps.

风.foxwho(神秘狐) 1万+

基于Simulink的电源纹波抑制仿真

电源纹波(Power Supply Ripple)是指直流电源输出中存在的交流分量。纹波的存在会导致电压波动,进而影响负载设备的性能和寿命。为了确保高质量的电源输出,通常需要设计有效的滤波电路来抑制纹波。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电源纹波抑制方案。本教程将详细介绍如何使用 Simulink 进行电源纹波抑制的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行电源纹波抑制的仿真实例。背景介绍:理解电源纹波及其对电力电子系统的影响。仿真建模过程。

xiaoheshang_123的博客 514

nginx rewrite 和 try_files的配置

今天看了nginx的这两个线上配置,有点忘记了,查了一些资料,然后梳理了一下,这里做一个记录,原来的配置大约如下(做了简化) location /test { client_max_body_size 1024M; rewrite /test/(.*) /test/abc/$1?$args break; try_files $uri $uri/ @proxy; } location @proxy { xxxx } 这里有一个rewrite和try_files,假设这个...

jurenaa的专栏 1626

农业无人机:无人机图像处理_(8).遥感图像处理与分析

遥感图像处理与分析在农业无人机技术中具有重要作用,通过图像预处理、特征提取、分类与分割、目标检测等技术,可以实现对农田的精细管理、作物监测、病虫害预测等应用。本节详细介绍了这些技术的基本概念、常用方法和具体实现,希望对您在农业无人机图像处理方面的学习和应用有所帮助。

zhubeibei168的博客 1336

从理论到实践:AI设备维护系统的架构实现

第一部分:理论基石——从设备维护的演进讲起,理解AI如何重塑维护模式;第二部分:架构设计——详解六层高可用系统架构,明确各层职责与技术选型;第三部分:核心技术——拆解数据处理、特征工程、模型训练、部署等关键环节的实现细节;第四部分:实践落地——8步流程带你从需求到上线,附代码示例与工具链;第五部分:案例研究——风电齿轮箱预测性维护系统的真实案例,从问题到方案再到效果;第六部分:挑战与展望——探讨当前技术瓶颈与未来趋势(数字孪生、联邦学习等)。准备好了吗?

大数据洞察的博客 1251

php script_uri,解释try_files $uri $uri/ /index.php$is_args$args;

nginx 里边 try_files的用法核心作用:可以替代rewrite作用域: server 、location没有默认值语法: try_files 【$uri 】 【 $uri/ 】 参数如:try_files $uri $uri/ /index.php$is_args$args 或 try_files $uri $uri/ = 404$uri 是请求文件的路径$...

weixin_39851914的博客 357

基于STM32+华为云IOT设计的云平台监控系统_102

本次设计结合现代生活的具体需求,设计出一套基于华为云IOT设计的云平台监控系统,可以远程实时查看家里光照强度、温湿度等信息,支持在云端控制家里的电器设备,实现远程控制。

7644

一次NGINX rewrite重定向403错误排除

一次NGINX rewrite重定向403错误排除 以下2个网址,第一个(没有.php字样)的正常,第二个会显示403错误,但返回内容 http://api.cn/type/item_get/? http://api.cn/type/api_call.php?api_name=item_get 与第一个一致,由于部分客户端会根据HTTP状态判断网络请求是否成功,于是必须修复。 经过排查,凡是URL中出现.php即会报错(?符号后不影响) 尝试删除nginx/conf/fcgi.conf中的403输出,但又会

wbryze的博客 2698

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Linux指令防止被重写,[Linux] nginx的try_files指令实现隐藏index.php的重写

1.Nginx的try_files指令 ,核心功能是替代rewrite,并且比rewrite更强大的是可以按顺序查找文件是否存在,如果文件都找不到才会执行最后的重定向解决的问题是,如果一个网站的部署是如下结构:css/js/index.PHPlogin.PHPsetting.PHP2.当有接口的地址是 index.PHP/article/2,这样的path_info模式时,需要隐藏掉index.P...

weixin_36143786的博客 440

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

nginx环境下laravel框架URL省略输入index.php的配置

nginx环境下laravel框架URL省略输入index.php的配置

lcw2007101的专栏 1206

nginx如何配置多个域名访问

在使用lnmp一键安装包安装环境的时候,配置好了nginx,访问域名时却发现报了404错误,用静态文件缉检查路径是对的,说明php的解析有问题。在网上找到的nginx配置也是无法使用,因此,在此简单总结一下。 1.首先找到自己的nginx.conf在哪里 whereis nginx.conf 该命令可以用来查找文件位置 2.然后进入该目录打开nginx.conf查看一下: 简单查看一下几个...

MClink的博客 1万+

thinkphp 去掉index.php,nginx如何实现thinkphp去掉index.php访问?

nginx 1.10.3php-fpmphp7.1Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-117-generic x86_64)这是环境,下面是我apache中关于php-fpm的相关配置index index.html index.htm index.php default.html default.php index.nginx-debian.html;# if...

weixin_32191249的博客 915

nginx与apache的伪静态

nginx location / { #将地址末尾添加.php后缀 try_files $uri $uri/ $uri.php?$args; } 例:访问:https://test.weblf.cn/haha/hehe/demo?id=3 实际访问:https://test.weblf.cn/haha/hehe/demo.php?id=3

帆酱的博客 627

nginx重写index.php,用nginx重写所有对index.php的请求

用nginx重写所有对index.php的请求在我的Apacheconfiguration,我有以下简单的重写规则除非文件存在将重写到index.php在你永远不会看到文件扩展名(.php)我怎么能重写这个在Nginx?# # Redirect all to index.php # RewriteEngine On # if a directory or a file exists, use it...

weixin_34061587的博客 982

php_self include,PHP_SELF返回/index.php/index.php

为什么$_SERVER [‘PHP_SELF’]会返回/index.php/index.php ??请求http://example.com产量/index.php/index.php的index.phpecho $_SERVER['PHP_SELF'];nginx.confserver {listen 80;server_name domain.com;root /var/www/publ...

weixin_39940344的博客 300

laravel隐藏index.php的方法

laravel隐藏index.php的方法:1、开启apache mod_rewrite模块,并修改htaccess文件;2、在nginx配置文件中通过“try_files $uri $uri/...”指令实现隐藏index.php。首先保证你的Apache mod_rewrite 模块已经开启. 框架默认有一个 public/.htaccess 文件可以实现隐藏 index.php 的访问.

g470641382的博客 805

nginx配置后只有根目录首页index.php能访问,其他页面404

我本地是window系统,用的是phpstudy,解决办法:用phpstudy点击其他选项菜单->打开配置文件->选择vhost-ini(或者找到nginx安装目录,打开vhost.conf),在你的站点配置里 location / {   index index.html index.htm index.php;   #aut...

1373

nginx 1.14 php,nginx 1.14.0 配置部署 thinkphp 5.1

开始接触NGINX,配置tp5配了半天,找不到具体原因,于是用网上搜索到的配置复制粘贴搞定。感谢 https://blog.youkuaiyun.com/qq_36431213/article/details/80456993开始以为是rewrite部分写不正确,其实根本就不用if(!-e $request_name){ rewrite ^(.*)$ /index.php/$ last;break;},用 t...

weixin_29924799的博客 302

PHPstudy隐藏index.php前缀

Apache 第一步: 打开phpstudy=>其他选择菜单=>php扩展及设置=>Apache 模块 第二步: 找到rewrite_module,开启rewrite_module就行了 Nginx 打开PHPstudy nignx/conf下有vhosts.conf这个文件的话,在这个文件里配置,当有这个文件的时候,在nginx.conf里配置是不起作用的。没有的话就在nginx.conf文件配置在location/{} 加上这句 try_files $uri $..

qq_45232744的博客 2121

nginx配置后只能访问首页,其他页面404

添加如下代码到vhosts-conf 文件中server 下 location / { try_files $uri $uri/ /index.php?$query_string; if(!-e $request_filename){ rewrite ^/(.*) /index.php last; } } ...

M.Yang的博客 6012

phpstudy thinkphp5在nginx服务器上除了首页其余都是404的问题

这行代码要不就放在vhosts.conf里,要不就是在nginx.conf里 try_files $uri $uri/ /index.php?$query_string; if (!-e $request_filename) { rewrite ^(.*)$ /index...

qq_41988958的博客 1603
上一篇: php pdftotext,pdftotext —— Linux/Unix中将PDF文件转化为Text文本格式的利器
下一篇: php $path_info,PHP中的$_SERVER['PATH_INFO']
尔德童
博客等级 码龄8年 23粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值