nginx 各參數(shù)翻譯,作用 $arg_PARAMETER #這個(gè)變量包含GET請(qǐng)求中,,如果有變量PARAMETER時(shí)的值,。 $args #這個(gè)變量等于請(qǐng)求行中(GET請(qǐng)求)的參數(shù),例如foo=123&bar=blahblah; $binary_remote_addr #二進(jìn)制的客戶地址,。 $body_bytes_sent #響應(yīng)時(shí)送出的body字節(jié)數(shù)數(shù)量,。即使連接中斷,這個(gè)數(shù)據(jù)也是精確的,。 $content_length #請(qǐng)求頭中的Content-length字段,。 $content_type #請(qǐng)求頭中的Content-Type字段。 $cookie_COOKIE #cookie COOKIE變量的值 $document_root #當(dāng)前請(qǐng)求在root指令中指定的值,。 $document_uri #與$uri相同,。 $host #請(qǐng)求主機(jī)頭字段,否則為服務(wù)器名稱,。 $hostname #Set to the machine's hostname as returned by gethostname $http_HEADER $is_args #如果有$args參數(shù),,這個(gè)變量等于”?”,否則等于”',,空值,。 $http_user_agent #客戶端agent信息 $http_cookie #客戶端cookie信息 $limit_rate #這個(gè)變量可以限制連接速率。 $query_string #與$args相同,。 $request_body_file #客戶端請(qǐng)求主體信息的臨時(shí)文件名,。 $request_method #客戶端請(qǐng)求的動(dòng)作,通常為GET或POST。 $remote_addr #客戶端的IP地址,。 $remote_port #客戶端的端口,。 $remote_user #已經(jīng)經(jīng)過(guò)Auth Basic Module驗(yàn)證的用戶名。 $request_completion #如果請(qǐng)求結(jié)束,,設(shè)置為OK. 當(dāng)請(qǐng)求未結(jié)束或如果該請(qǐng)求不是請(qǐng)求鏈串的最后一個(gè)時(shí),,為空(Empty)。 $request_method #GET或POST $request_filename #當(dāng)前請(qǐng)求的文件路徑,,由root或alias指令與URI請(qǐng)求生成,。 $request_uri #包含請(qǐng)求參數(shù)的原始URI,不包含主機(jī)名,,如:”/foo/bar.php?arg=baz”,。不能修改。 $scheme #HTTP方法(如http,,https),。 $server_protocol #請(qǐng)求使用的協(xié)議,通常是HTTP/1.0或HTTP/1.1,。 $server_addr #服務(wù)器地址,,在完成一次系統(tǒng)調(diào)用后可以確定這個(gè)值。 $server_name #服務(wù)器名稱,。 $server_port #請(qǐng)求到達(dá)服務(wù)器的端口號(hào),。 $uri #不帶請(qǐng)求參數(shù)的當(dāng)前URI,$uri不包含主機(jī)名,,如”/foo/bar.html”,。該值有可能和$request_uri 不一致。$request_uri是瀏覽器發(fā)過(guò)來(lái)的值,。該值是rewrite后的值,。例如做了internal redirects后。
例如: 所以,,關(guān)鍵點(diǎn)就在于“,?”這個(gè)尾綴,。假如又想保留某個(gè)特定的參數(shù),,那又該如何呢?可以利用Nginx本身就帶有的$arg_PARAMETER參數(shù)來(lái)實(shí)現(xiàn),。 例如: 只求結(jié)果的朋友可以直接忽略前面的內(nèi)容,,看這里:
首先Apache的Rewite規(guī)則差別不是很大,但是Nginx的Rewrite規(guī)則比Apache的簡(jiǎn)單靈活多了 if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } Rewrite的Flags last - 完成重寫(xiě)指令后,,搜索相應(yīng)的URI和位置,。相當(dāng)于Apache里的[L]標(biāo)記,表示完成rewrite,,不再匹配后面的規(guī)則,。 ZEND Framework的重定向規(guī)則: rewrite ^/(.*) /index.php?$1&; 案例二: 如果文件或目錄不存在則重定向到index.php if (!-e $request_filename) {
rewrite ^/(.*) /index.php?$1&; } WordPress的重定向規(guī)則: if (!-e $request_filename) { rewrite ^/(. )$ /index.php?p=$1 last; } 案例二: 與zendframework配置很像 if (!-e $request_filename) {
rewrite ^/(.*) /index.php?$1&; } 以下為Discuz完整的Rewrite for Nginx規(guī)則 if (!-f $request_filename) {
rewrite ^/archiver/((fid|tid)-[\w\-] \.html)$ /archiver/index.php?$1 last; rewrite ^/forum-([0-9] )-([0-9] )\.html$ /forumdisplay.php?fid=$1&page=$2 last; rewrite ^/thread-([0-9] )-([0-9] )-([0-9] )\.html$ /viewthread.php?tid=$1&extra=page=$3&page=$2 last; rewrite ^/space-(username|uid)-(. )\.html$ /space.php?$1=$2 last;rewrite ^/tag-(. )\.html$ /tag.php?name=$1 last; } 文件及目錄匹配,,其中: 正則表達(dá)式全部符號(hào)解釋 |
|
來(lái)自: waitingnothing > 《待分類》