导航:首页 > 编程语言 > nginxrewritephp

nginxrewritephp

发布时间:2022-06-19 04:15:20

1. nginx rewrite 在哪配置

对于nginx的各种指令而言,如果想知道该指令的配置格式和位置,那么比较好的一种方式就是查看nginx的源码,正所谓“源码面前,了无秘密”。

rewrite指令在nginx的http的rewrite模块中定义(src/http/ngx_http_rewrite_mole.c)。查看一下该模块的指令数组可以看到如下的代码:

staticngx_command_tngx_http_rewrite_commands[]={

{ngx_string("rewrite"),
NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|NGX_CONF_TAKE23,
ngx_http_rewrite,
NGX_HTTP_LOC_CONF_OFFSET,
0,
NULL},

//...

}

从源码可以看出,rewrite可以出现的地方有4个:NGX_HTTP_SRV_CONF,NGX_HTTP_SIF_CONF,NGX_HTTP_LOC_CONF,NGX_HTTP_LIF_CONF。分别对应着:

NGX_HTTP_SRV_CONF:配置文件中的server域中的任何地方;
NGX_HTTP_SIF_CONF:配置文件中server域中的if配置中;
NGX_HTTP_LOC_CONF:配置文件中的location域中的任何地方;
NGX_HTTP_LIF_CONF:配置文件中的location域中的if配置中;


举例如下:

//...
server{
//...
rewrite"^/+$"/index.phpbreak;

if($uri~*"^/+abc"){
rewrite"^/+abc"/abc/index.phpbreak;
}

location/xy{
rewrite"^/+xy$"/xy/index.phpbreak;
}
}

2. nginx rewrite规则怎么配置

rewrite可以出现的地方有4个:NGX_HTTP_SRV_CONF,NGX_HTTP_SIF_CONF,NGX_HTTP_LOC_CONF,NGX_HTTP_LIF_CONF。分别对应着:
NGX_HTTP_SRV_CONF:配置文件中的server域中的任何地方;
NGX_HTTP_SIF_CONF:配置文件中server域中的if配置中;
NGX_HTTP_LOC_CONF:配置文件中的location域中的任何地方;
NGX_HTTP_LIF_CONF:配置文件中的location域中的if配置中;
举例如下:
//...
server {
//...
rewrite "^/+$" /index.php break;
if ($uri ~* "^/+abc") {
rewrite "^/+abc" /abc/index.php break;
}
location /xy {
rewrite "^/+xy$" /xy/index.php break;
}
}
?
1
其中location的详细描述和location的强大功能可以在本网站搜索框中输入“ngingx location”来搜索。
补充
1.break指令
默认值:none ;使用环境:server,location,if ;
该指令的作用是完成当前的规则集,不再处理rewrite指令。
2.if指令
默认值:none ;使用环境:server,location
该指令用于检查一个条件是否符合,如果条件符合,则执行大括号内的语句。If指令不支持嵌套,不支持多个条件&&和||处理。
A.变量名,错误的值包括:空字符串""或者任何以0开始的字符串
B.变量比较可以使用"="(表示等于)和"!="(表示不等于)
C.正则表达式模式匹配可以使用"~*"和"~"符号
D."~"符号表示区分大小写字母的匹配
E."~*"符号表示不区分大小写字母的匹配
F."!~"和"!~*"符号的作用刚好和"~"、"~*"相反,表示不匹配
G."-f"和"!-f"用来判断文件是否存在
H."-d"和"!-d"用来判断目录是否存在
I."-e"和"!-e"用来判断文件或目录是否存在
J."-x"和"!-x"用来判断文件是否为可执行
K.部分正则表达式可以在()内,用$1~$9来访问
3.return指令
语法:return code ;使用环境:server,location,if ;
该指令用于结束规则的执行并返回状态码给客户端。
示例:如果访问的URL以".sh"或".bash"结尾,则返回403状态码
location ~ .*.(sh|bash)?$
{
return 403;
}
4.rewrite 指令
语法:rewrite regex replacement flag
默认值:none ; 使用环境:server,location,if
该指令根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句,示例如下:
if( $host ~* www.(.*) )
{
set $host_without_www $1;
rewrite ^(.*)$ http://$host_without_www$1 permanent;
}
rewrite指令的最后一项参数为flag标记,支持flag标记有:
1.last 相当于apache里面的[L]标记,表示rewrite。
2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
3.redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4.permanent 返回301永久重定向, 浏览器地址会显示跳转后的URL地址。
使用last和break实现URI重写,浏览器地址栏不变。而且两者有细微差别,使用alias指令必须用last标记;使用proxy_pass指令时,需要使用break标记。Last标记在本条rewrite规则执行完毕后,会对其所在server{......}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配。
一般在跟location中(location /{...})或直接在server标签中编写rewrite规则,推荐使用last标记;在非根location中(location /cms/{...}),则使用break。
如果URI中含有参数(/app/test.php?id=5),默认情况下参数会被自动附加到替换串上,你可以通过在替换串的末尾加上?标记来解决这一问题。

3. nginx rewrite 里面的php能执行 html 500错误

截取字符串返回部分字符串2、mb_substr() 使用方法和subst*相同,不过要开启php.ini里面extension=php_mbstring dl1扩展,不用担心,一般的空间商都会开启这
\ substr如果不行你可以去后盾人

4. nginx下thinkphp框架设置rewrite模式需要配置pathinfo吗

打开Nginx的配置文件 /usr/local/nginx/conf/nginx.conf 一般是在这个路径,根据你的安装路径可能有所变化。如果你配置了vhost,而且只需要你这一个vhost支持pathinfo的话,可以直接打开你的vhost的配置文件。

5. 如何正确配置Nginx + PHP

先上配置的过程,下面是解释。

6. nginx+Rewrite规则:全站强制https跳转,/admin.php 文件除外,它要走http。请问这个规则要怎么写

nginx强制使用https访问(http跳转到https)
基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.com,但是很多用户不清楚https和http的区别,会很容易敲成http://test.com,这时会报出404错误,所以我需要做基于test.com域名的http向https的强制跳转
我总结了三种方式,跟大家共享一下
nginx的rewrite方法
思路
这应该是大家最容易想到的方法,将所有的http请求通过rewrite重写到https上即可
配置
server {
listen 192.168.1.111:80;
server_name test.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
搭建此虚拟主机完成后,就可以将http://test.com的请求全部重写到https://test.com上了
nginx的497状态码
error code 497
497 - normal request was sent to HTTPS
解释:当此虚拟站点只允许https访问时,当用http访问时nginx会报出497错误码
思路
利用error_page命令将497状态码的链接重定向到https://test.com这个域名上
配置
server {
listen 192.168.1.11:443; #ssl端口
listen 192.168.1.11:80; #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口
server_name test.com;
#为一个server{......}开启ssl支持
ssl on;
#指定PEM格式的证书文件
ssl_certificate /etc/nginx/test.pem;
#指定PEM格式的私钥文件
ssl_certificate_key /etc/nginx/test.key;
#让http请求重定向到https请求
error_page 497 https://$host$uri?$args;
}
index.html刷新网页
思路
上述两种方法均会耗费服务器的资源,我们用curl访问.com试一下,看网络的公司是如何实现.com向www..com的跳转
可以看到网络很巧妙的利用meta的刷新作用,将.com跳转到www..com.因此我们可以基于http://test.com的虚拟主机路径下也写一个index.html,内容就是http向https的跳转
index.html
<html>
<meta http-equiv="refresh" content="0;url=https://test.com/">
</html>
nginx虚拟主机配置
server {
listen 192.168.1.11:80;
server_name test.com;
location / {
#index.html放在虚拟主机监听的根目录下
root /srv/www/http.test.com/;
}
#将404的页面重定向到https的首页
error_page 404 https://test.com/;
}

7. 关于nginx中的rewrite问题

\w+ 匹配由数字、26个英文字母或者下划线组成的字符串
.* 意味着能够匹配任意数量的任何字符
$1-$9存放着正则表达式中最近的9个正则表达式的匹配结果,这些结果按照子匹配的出现顺序依次排列。
$1 代表的是匹配的第一个结果
括号表示的是表达式定义的“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个) 上面的表达式有2个匹配组 (\w+) 和 (.*) 所有后面可以用 $1 和 $2 来用

比如你的例子
^/(\w+)/(.*)$ /$1/index.php last;

/abc123/bcdfda => /abc123/index.php

8. nginx rewrite匹配到"public/"则将其变为"public/index.php_url=/"要怎么写"

location/public{
try_files$uri$uri//index.php?_url=/?$query_string;
client_max_body_size10m;
}

你试试

9. nginx rewrite 怎么写

Nginx Rewrite规则相关指令有if、rewrite、set、return、break等,其中rewrite是最关键的指令。一个简单的Nginx Rewrite规则语法如下:
rewrite ^/b/(.*)\.html /play.php?video=$1 break;
如果加上if语句,示例如下:
if (!-f $request_filename)
rewrite ^/img/(.*)$ /site/$host/images/$1 last;
Nginx与Apache的Rewrite规则实例对比

10. 怎么理解 nginx 中 rewrite 的用法

字面意思就是把abc.com/xxx按abc.com/index.php/xxx来解析
对于/index.php/abc这种url,Apache和lighttpd会按"index.php?abc"来解释,而nginx会认为是请求名字是“index.php”的目录下的abc文件的内容。所以一些框架,如CI,在nginx下不配置rewrite是无法运行的,而在Apache和lighttpd则正常。另外,好像nginx里index.php会转换成index_php,(未求证)
解决方法是
location /
{
index index.php;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1 last;
break;
}
}

阅读全文

与nginxrewritephp相关的资料

热点内容
30岁学编程晚吗 浏览:68
解压专家怎么打开 浏览:86
php开源留言板 浏览:49
新乡市区疫情怎么查询app 浏览:158
我的世界服务器怎么弄图 浏览:999
vc6的编译框 浏览:198
程序员写照 浏览:539
怎么退出github服务器版本 浏览:797
云服务器sip 浏览:910
对称平衡型压缩机 浏览:953
rust连接什么服务器 浏览:382
php删除数组的空元素 浏览:74
有什么古今翻译的app 浏览:54
华为平板里的app热门推荐怎么关闭 浏览:731
kindle可以看pdf吗 浏览:620
小米文件夹变小 浏览:324
为什么安卓系统不设计横屏 浏览:686
myeclipse编译文件 浏览:586
水果解压视频教程 浏览:207
单片机控制的大一点的车 浏览:640