数智学习中心 计科随机库
学习专区 Linux专栏 博客圈 计科之路 登录
Nginx 重定向 伪静态 rewrite index.php

##Nginx 重定向 伪静态 rewrite index.php

仔细观察 rewrite ^(.*)/t(d+).html$ $1/index.php?t=3 last;其实感觉nginx的伪静态规则蛮好写的。

就是用正则的基础上,一个rewrite来声明,然后^是伪静态规则开头,(.*)匹配任意字符,这里匹配的就是域名了,t就是你在这里想加的字符,

如你可以加apple、orange这样的分类名了,(d+)匹配的是数字,.html匹配的是后缀,$就是正则匹配的结束。

后面半部分就是要改写的url了,用$1打头,表示域名,/index.php?t=3就是要改写的URL,用last;结束即可。


if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

(-d $request_filename)它有个条件是必需为真实目录,而我的rewrite不是的,所以没有效果


文件和目录不存在的时候重定向:

解释 rewrite ^(.*)$ /index.php$1 last; 的正则表达式部分 ^(.*)$‌:

rewrite 是Nginx的重写指令。

^(.*)$ 是正则表达式,用于匹配请求的URI。

^ 表示字符串的开始。

(.*) 是一个捕获组,用于匹配任意字符(.)零次或多次(*)。

$ 表示字符串的结束。

因此,^(.*)$ 可以匹配任意请求URI,并将其捕获为第一个参数(即$1)。

‌解释 rewrite ^(.*)$ /index.php$1 last; 的重写目标部分 /index.php$1‌:

/index.php$1 是重写后的目标URI。

/index.php 是目标文件的路径。

$1 是前面正则表达式中捕获的第一个参数,即原请求的URI。

因此,重写后的URI会将原请求的URI作为参数传递给index.php文件。

‌解释 rewrite ^(.*)$ /index.php$1 last; 中的 last 标志的作用‌:

last 是Nginx重写指令的标志之一。

当使用last标志时,Nginx会停止处理后续的rewrite指令,并使用重写后的URI重新发起一次搜索。

如果重写后的URI匹配到一个location块,Nginx将使用该location块处理请求。

‌概括整段伪代码的功能‌:

整段伪代码的功能是:当Nginx接收到一个请求时,如果该请求的文件或目录在服务器上不存在,Nginx会将该请求重写为对index.php文件的请求,并将原请求的URI作为参数传递给index.php。这通常用于实现前端控制器模式,将所有请求都转发给一个入口文件(如index.php),然后由该文件根据请求的URI进行进一步的处理。

示例代码片段如下:

nginxCopy Code

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
        break;
    }
}

这段配置位于Nginx的配置文件中,通常用于处理网站的根目录(/)下的请求。当请求的文件或目录不存在时,Nginx会将请求重写为对index.php的请求,并将原请求的URI作为参数传递。

评论留言

一共0条留言