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

首頁 > 網(wǎng)站 > Nginx > 正文

Nginx的偽靜態(tài)配置中使用rewrite來實(shí)現(xiàn)自動(dòng)補(bǔ)全的實(shí)例

2024-08-30 12:26:29
字體:
供稿:網(wǎng)友

nginx+php 使用的時(shí)候經(jīng)常需要偽靜態(tài),一般大家都手動(dòng)設(shè)置。那有沒有辦法讓 nginx 自動(dòng)補(bǔ)全路徑呢?
這兩天折騰很久,才實(shí)現(xiàn)了這樣一個(gè)功能:
請(qǐng)求 /a/b/c
若文件不存在,查找 /a/b/index.php,/c 作為 PATH_INFO;
若文件不存在,查找 /a/index.php,/b/c 作為 PATH_INFO;
若文件不存在,查找 /index.php,/a/b/c 作為 PATH_INFO;
若文件不存在,返回 404.

雖然這種損耗性能的行為不適合部署,但在本機(jī)調(diào)試的時(shí)候還是能夠帶來方便的 :)

server 端應(yīng)有如下代碼,其他部分使用自己的配置:

index index.php index.html index.htm;location / {  set $path $request_uri;  set $path_info "";  try_files $uri $uri/ @404;}location @404 {  if ($path ~ ^(.*)(/.+)$) {    set $path $1/index.php;    set $path_info $2;    rewrite .* $path last;  }  return 404;}location ~ .+.php($|/) {  fastcgi_split_path_info ^(.+.php)(/.+)$;  if ($path_info !~ .*) {    set $path_info $fastcgi_path_info;  }  try_files $fastcgi_script_name @404php;  fastcgi_param PATH_INFO $path_info;  fastcgi_index index.php;  include fastcgi.conf;  fastcgi_pass unix:/usr/local/var/run/php-fpm.sock;  fastcgi_connect_timeout 60;  fastcgi_send_timeout 300;  fastcgi_read_timeout 300;}location @404php {  if ($path = /index.php) {    return 404;  }  if ($path ~ ^(.*)(/.+)/index.php$) {    set $path_info $2;    set $path $1/index.php;    rewrite .* $path last;  }  return 404;}

Rewrite的Flags
last - 基本上都用這個(gè)Flag。
break - 中止Rewirte,不在繼續(xù)匹配
redirect - 返回臨時(shí)重定向的HTTP狀態(tài)302
permanent - 返回永久重定向的HTTP狀態(tài)301
規(guī)則:
一般在非根的location中配置rewrite,都是用的break;而根的location使用last比較好,因?yàn)槿绻渲昧薴astcgi或代理訪問jsp文件的話,在根location下用break是訪問不到

正則表達(dá)式形式的模式匹配,如~*和~

‘~'表示大小寫敏感的匹配 ‘~*'表示大小寫不敏感的匹配(例如:“firefox”字符串可以成功匹配“FireFox”)  !~和!~*代表跟后面的正則匹配規(guī)則相反的規(guī)則,表示不能匹配當(dāng)前正則表達(dá)式規(guī)則的字符串執(zhí)行后面的處理語句 使用-f參數(shù)以及!-f參數(shù)檢測(cè)一個(gè)文件是否存在 使用-d參數(shù)以及!-d參數(shù)檢測(cè)一個(gè)目錄(路徑)是否存在 使用-e以及!-e檢測(cè)是否存在一個(gè)文件,一個(gè)目錄或者一個(gè)符號(hào)鏈接。 使用-x以及!-x檢測(cè)一個(gè)文件是否可執(zhí)行 正則表達(dá)式部分可以嵌套,表達(dá)式后面的部分如果用到前面的表達(dá)式可以用 $1 到$9 變量表示。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 翼城县| 克东县| 梨树县| 乌拉特前旗| 德清县| 浦东新区| SHOW| 宁津县| 青州市| 兴城市| 砚山县| 宜兴市| 蓬莱市| 石嘴山市| 库车县| 肇东市| 温泉县| 犍为县| 余江县| 玉环县| 遂川县| 陆河县| 鄂温| 亳州市| 星座| 吉林省| 三河市| 阳朔县| 无极县| 井陉县| 漳浦县| 洞口县| 东乡县| 怀柔区| 安岳县| 收藏| 宁陵县| 安乡县| 磐石市| 修武县| 白朗县|