当前位置 主页 > 服务器问题 > nginx问题汇总 >

Nginx服务器下使用rewrite重写url以实现伪静态的示例

栏目:nginx问题汇总 时间:2018-09-14 16:45

这篇文章主要介绍了Nginx服务器下使用rewrite重写url以实现伪静态的示例,这里举了Discuz!和WordPress这两个常用的PHP程序,需要的朋友可以参考下

经过网上查阅和测试,发现Nginx的Rewrite规则和Apache的Rewite规则差别不是很大,几乎可以直接使用。比如在Apache中这样写规则

rewrite ^/([0-9]{5}).html$ /viewthread.php?tid=$1 last;

而在Nginx中写成这样写是无法启动的,解决的办法是加上两个双引号:

rewrite "^/([0-9]{5}).html$" /viewthread.php?tid=$1 last;

同时将RewriteRule为Rewrite,基本就实现了Nginx的Rewrite规则到Apache的Rewite规则的转换。

Rewrite的Flags

last - 基本上都用这个Flag。 break - 中止Rewirte,不在继续匹配 redirect - 返回临时重定向的HTTP状态302 permanent - 返回永久重定向的HTTP状态301

WordPress的Rewrite
其实在Nginx下配置WordPress的Rewrite还是比较简单的,在location /{..................}里面加入

if (!-f $request_filename){rewrite (.*) /index.php;}

即可实现。

下面是一个完整的vhost的配置文件

server {listen 80;server_name ccvita.com www.ccvita.com;location / {    index index.html index.htm index.php;    root /www/wwwroot/ccvita.com;    if (-f $request_filename/index.html){        rewrite (.*) $1/index.html break;    }    if (-f $request_filename/index.php){        rewrite (.*) $1/index.php;    }    if (!-f $request_filename){        rewrite (.*) /index.php;    }}location ~ \.php$ {    include fastcgi_params;    fastcgi_index index.php;    fastcgi_pass 127.0.0.1:8787;    fastcgi_param SCRIPT_FILENAME /www/wwwroot/ccvita.com$fastcgi_script_name;    }location /ccvita-status {    stub_status on;    access_log off;    }}

Discuz!的Rewrite
下面的Rewrite中百分号前面多了个转移字符“\”,这在Apache中是需要的,而在Nginx中则是不需要的。

rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page\%3D$3&page=$2 last;

正确的应该是

rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;

这个错误在基本上目前所有使用Nginx作为服务器,并且开启了Rewrite的网站上存在。包括Discuz!官方,目前已经给cnteacher反馈了。
Nginx实例代码

server {  listen    80;  server_name www.ccvita.com ccvita.com;  location / {     index      index.html index.htm index.php;     root      /www/www.ccvita.com;     rewrite ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2 last;     rewrite ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3 last;     rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3 last;     rewrite ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3 last;     rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3 last;     rewrite ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2 last;  }    location ~ \.php$ {        include fastcgi_params;        fastcgi_index index.php;        fastcgi_pass 127.0.0.1:8694;        fastcgi_param SCRIPT_FILENAME /www/www.ccvita.com$fastcgi_script_name;    }  location /www.ccvita.com-status {     stub_status on;     access_log off;  }}



缩小 缩小 缩小 缩小
IIS7整站下载工具 IIS7批量查询排名 IIS7远程桌面连接工具 iis7-iis网站批量管理 iis7批量替换工具 IIS7服务器专用下载工具 IIS7日志分析工具 IIS7批量PING,服务器批量添加网卡IP小工具 IIS7远程同步备份工具
IIS7网站监控 站群批量SEO查询 批量获取排名域名 批量关键词排名查询 模拟各种蜘蛛 批量友情链接监测 批量检测死链 搜索引擎大全 批量查询外链
批量查询网站标题 批量查询KeyWords 批量查询描述 批量查询网站IP 批量百度收录查询 批量查询百度日收录 批量查询百度周收录 批量查询百度月收录 批量查询360总收录 批量查询360日收录 批量查询网站年龄 批量查询360PC权重 批量查询爱站移动权重 批量查询站长移动权重 批量查询360移动权重 批量查询神马权重 批量查询谷歌PR 批量查询搜狗PR 批量查询百度反链 批量查询爱站首页反链 批量查询爱站内页反链 批量查询百度快照 批量查询搜狗快照 批量icp备案查询 批量网站ip地址查询 批量查询导出链接 批量查询百度V认证 批量查询百度安全 批量查询站长PC权重 批量查询爱站PC权重 批量查询搜狗总收录 站长资源大全 IIS7-cms大全 IIS7站群大全 IIS7虚拟空间大全 IIS7服务器大全 IIS7-VPS大全 服务器代购 站群专用 美国站群服务器 香港站群服务器 特供站群vps 亚洲服务器 菲律宾HS 韩国首尔 香港PCCW 香港沙田电信 香港PowerLine 日本多机房 新加坡多机房 韩国大带宽 香港新世界 香港Pangnet 台湾 美国服务器 加州RS 美国vps母鸡租用 洛杉矶MC 洛杉矶C3 特价促销区 洛杉矶NS 洛杉矶Cera高防 洛杉矶HS高防 SK高防 洛杉矶WX 加州RH 芝加哥AT VPS云主机 香港沙田电信 韩国首尔 香港Pangnet 新加坡SG 香港PL 洛杉矶SK 抗攻击 洛杉矶C3 日本大阪 洛杉矶Cera 抗攻击 洛杉矶MC 纽约 SSD 抗攻击 大容量备份VPS 国庆大促 俄罗斯