php的yii框架

php的yii框架。

這是用不同的域名配置的,但是要在一個域名裏邊實現如下需求,還沒研究出來。

發佈目錄 /alidata/txall 下邊有 callback usercenter ordercenter marketcenter 等目錄。每個目錄裏邊都有一個web 目錄,和其他的目錄。就是配置 callback.shirbility.cn 時,root 直接寫 /alidata/txall/callabck/web 直接訪問web,但是callback下邊與web同級的目錄也要能訪問到,其他的東西在web裏邊定義了,可以調用,在域名後邊加東西。如 callback.shirbility.cn/index 能夠調用web同級的目錄。 這樣的話配置如下。


server{
    listen       80;
    server_name callback.shirbility.cn;
    index index.html index.htm index.php;
    root   /alidata/txall/callback/web;

   location  /  {
     root  /alidata/txall/callback/web;
     index   index.html index.php index.htm;
    try_files $uri $uri/ /index.php$is_args$args;        # 這個配置可以實現如上的要求。root指向web,在域名後邊加東西能夠被調用。
}

   location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    error_page   404              /404.html;
    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   html;
    }
}

如上配置可以實現需求,就是將root 指向 /alidata/txall/callback/web.同時呢可以將cllback目錄下邊與web同級的目錄或文件直接調用。

nginx 裏邊 try_files的用法
核心作用:可以替代rewrite
作用域: server 、location
沒有默認值

語法: try_files 【$uri 】 【 $uri/ 】 參數
如:
try_files $uri $uri/ /index.php$is_args$args 或 try_files $uri $uri/ = 404

$uri 是請求文件的路徑
$uri/ 事請求目錄的路徑

參數: $uri
解釋: 表示當前請求的URI,不帶任何參數
訪問: curl http://test.wanglei.com/192.168.1.200?a=10 -I
返回: "/192.168.1.200"

原理:
(1)、當location匹配到以後,如 www.123.com/example 配置爲 try_files $uri = 404
他只會在發佈目錄裏邊着examplt這個文件,(因爲你只配置了$uri)

(2)、當你訪問 www.123.com/example 配置爲 try_files $uri/ = 404 他會在發佈目錄裏邊尋找example 這個目錄,(因爲只配置了$uri/ )

(3)、當你的配置爲 try_files $uri $uri/ = 404 ,訪問 www.123.com/example 的時候 會先在發佈目錄裏邊找example這個文件,如果沒有的話 就在尋找example這個目錄。在try_files 尋找完以後不會跳出location,而是往下執行,如果後邊沒有需要執行的,就會返回給客戶端

(4)、當try_files 找不到文件時,內部會將這次請求重定向到最後一個參數,所以最後一個參數必須存在, try_files $uri $uri/ = 404 這個配置,當你訪問 www.123.com/example 時找不到example文件或目錄的時候,就會重定向到最後一個參數,就是 =404 ,當然也可以指向到其他的location,等等

(5)、/index.php$is_args$args

$is_args 解釋: 表示請求中的URL是否帶參數,如果帶參數,$is_args值爲"?"。如果不帶參數,則是空字符串 訪問: curl http://test.wanglei.com/192.168.1.200?a=10 -I 返回: "?"
訪問: curl http://test.wanglei.com/192.168.1.200 -I 返回: ""

參數: $args -----只接收參數
解釋: HTTP請求中的完整參數。
訪問: curl http://test.wanglei.com/192.168.1.200?a=10 -I
返回: "a=10"

有參數的話 就變成了 /index.php?a=10 //這樣就能訪問了。

現在解釋107上的配置:

server{
listen 80;
server_name example.123.cn;
index index.html index.htm index.php;
root /alidata/txall/callback/web;

location / {
root /alidata/txall/callback/web;
index index.html index.php index.htm;
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

定義到了 /alidata/txall/callback/web。web裏邊有index.php,
當我訪問 example.123.cn/index 的時候,try_files 會在web下找是否有index文件和目錄(因爲配置了 $uri 和 $uri/ ), 很顯然web目錄裏邊沒有,所以就把index當成了參數,所以呢原來的 example.123.cn/index 就變成了 example.123.cn/index.php?index 就這樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章