国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

Nginx服務器下使用rewrite重寫url以實現偽靜態的示例

2024-08-30 12:27:48
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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;  }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澄迈县| 津市市| 临夏县| 大田县| 吐鲁番市| 雅安市| 虞城县| 康乐县| 通江县| 黔南| 徐水县| 双辽市| 蒙城县| 灵山县| 毕节市| 类乌齐县| 双柏县| 镇远县| 文登市| 邵阳县| 北票市| 思南县| 泾源县| 新沂市| 靖远县| 莱芜市| 云梦县| 敦煌市| 紫阳县| 商丘市| 淳安县| 泗洪县| 曲阳县| 德钦县| 黄梅县| 武山县| 赞皇县| 宣城市| 安吉县| 宁海县| 定襄县|