㈠ nginx rewrite匹配到"public/"則將其變為"public/index.php_url=/"要怎麼寫"
location/public{
try_files$uri$uri//index.php?_url=/?$query_string;
client_max_body_size10m;
}
你試試
㈡ nginx location 路徑匹配:不含某字元的路徑
nginx不支持非正則,所以,沒有辦法一條實現這個你這個功能,只能「曲線救國回」,要麻煩點答,多建虛機:
還有就是瀏覽器#號不會被傳入到服務端,所以,你要替換掉這個符號,我這里用的是@
set $ip 192.168.0.2;
if ($request_uri ~* /@/(.*)+) {
set $ip 192.168.0.1;
}
location / {
proxy_pass http: //$ip;
}
㈢ nginx配置文件重寫url:去掉地址欄參數值為空的參數的正則怎麼寫
URL重寫有利於網站首選域的確定,對於同一資源頁面多條路徑的301重定向有助於URL權重的集中
Nginx URL重寫(rewrite)介紹
和apache等web服務軟體一樣,rewrite的組要功能是實現RUL地址的重定向。Nginx的rewrite功能需要PCRE軟體的支持,即通過perl兼容正則表達式語句進行規則匹配的。默認參數編譯nginx就會支持rewrite的模塊,但是也必須要PCRE的支持
rewrite是實現URL重寫的關鍵指令,根據regex(正則表達式)部分內容,重定向到replacement,結尾是flag標記。
rewrite語法格式及參數語法說明如下:
rewrite<regex><replacement>[flag];
關鍵字 正則 替代內容 flag標記
關鍵字:其中關鍵字error_log不能改變
正則:perl兼容正則表達式語句進行規則匹配
替代內容:將正則匹配的內容替換成replacement
flag標記:rewrite支持的flag標記
flag標記說明:
last #本條規則匹配完成後,繼續向下匹配新的location URI規則
break #本條規則匹配完成即終止,不再匹配後面的任何規則
redirect #返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址
permanent #返回301永久重定向,瀏覽器地址欄會顯示跳轉後的URL地址
rewrite參數的標簽段位置:
server,location,if
例子:
rewrite ^/(.*) m/$1 permanent;
說明:
rewrite為固定關鍵字,表示開始進行rewrite匹配規則
regex部分是^/(.*),這是一個正則表達式,匹配完整的域名和後面的路徑地址
replacement部分是om/$1 $1,是取自regex部分()里的內容。匹配成功後跳轉到的URL。
flag部分permanent表示永久301重定向標記,即跳轉到新的hm/$1地址上
regex常用正則表達式說明
字元
描述
將後面接著的字元標記為一個特殊字元或一個原義字元或一個向後引用。如「 」匹配一個換行符,而「$」則匹配「$」
^
匹配輸入字元串的起始位置
$
匹配輸入字元串的結束位置
*
匹配前面的字元零次或多次。如「ol*」能匹配「o」及「ol」、「oll」
+
匹配前面的字元一次或多次。如「ol+」能匹配「ol」及「oll」、「oll」,但不能匹配「o」
?
匹配前面的字元零次或一次,例如「do(es)?」能匹配「do」或者「does」,"?"等效於"{0,1}"
.
匹配除「 」之外的任何單個字元,若要匹配包括「 」在內的任意字元,請使用諸如「[. ]」之類的模式。
(pattern)
匹配括弧內pattern並可以在後面獲取對應的匹配,常用$0...$9屬性獲取小括弧中的匹配內容,要匹配圓括弧字元需要(Content)
rewrite企業應用場景
Nginx的rewrite功能在企業里應用非常廣泛:
u可以調整用戶瀏覽的URL,看起來更規范,合乎開發及產品人員的需求。
u為了讓搜索引擎搜錄網站內容及用戶體驗更好,企業會將動態URL地址偽裝成靜態地址提供服務。
u網址換新域名後,讓舊的訪問跳轉到新的域名上。例如,訪問京東的360buy.com會跳轉到jd.com
u根據特殊變數、目錄、客戶端的信息進行URL調整等
Nginx配置rewrite過程介紹
(1)創建rewrite語句
vi conf/vhost/www.abc.com.conf
#vi編輯虛擬主機配置文件
文件內容
server {
listen 80;
server_name abc.com;
rewrite ^/(.*) /$1permanent;
}
server {
listen 80;
server_name www.abc.com;
location / {
root /data/www/www;
index index.html index.htm;
}
error_log logs/error_www.abc.com.log error;
access_log logs/access_www.abc.com.log main;
}
或者
server {
listen 80;
server_name abc.com www.abc.com;
if ( $host != 'www.abc.com' ) {
rewrite ^/(.*) com/$1 permanent;
}
location / {
root /data/www/www;
index index.html index.htm;
}
error_log logs/error_www.abc.com.log error;
access_log logs/access_www.abc.com.log main;
}
(2)重啟服務
確認無誤便可重啟,操作如下:
nginx -t
#結果顯示ok和success沒問題便可重啟
nginx -s reload
(3)查看跳轉效果
打開瀏覽器訪問abc.com
頁面打開後,URL地址欄的abc.com變成了www.abc.com說明URL重寫成功。
㈣ nginx如何截取url部分字元並替換,求助
^|String.prototype.getQuery = function(name)
{
var reg = new RegExp("(^|抄&)"+ name +"=([^&]*)(&|$)");
var r = this.substr(this.indexOf("\?")+1).match(reg);
if (r!=null) return unescape(r[2]); return null;
}
var s = "web1.aspx?status=item&mode=edit";
alert(s.getQuery("status"));
alert(s.getQuery("mode"));
String.prototype.getQuery = function(name)
的意思是為String對象增加一個getQuery(name)方法.
㈤ 如何用nginx 規則來屏蔽某個URL刷量
^nginx重寫規抄則,過濾某些URL
if ($uri ~* ".*(admin){0}.*proct_id=(\d+)$") {
set $id $2;
rewrite ^/([^?]*) /proct-$id.html? permanent;
}
㈥ nginx如何根據url參數做跳轉
確保安裝 nginx 時 ./configure 有加入 --with-http_perl_mole 這一項, 然後在 nginx.conf 配置文件的http{}內、server{}前面加入:(加入內容在結構上與 server{} 並列) perl_set $urldecode 'sub {my $inf = shift; my $url = $inf-args; my $inx = index($url, "redirect=",); my $redirect = ""; if ($inx < 0) { $redirect = $url;}else {my $red = substr($url, $inx+9,); my $len = index($red, "\x26",); if ($len < 0) { $redirect = substr($red, 0,);}else{$redirect = substr($red, 0, $len);}}$redirect =~ s/\%([A-Fa-f0-9]{2})/pack("C", hex($1))/seg; return $redirect;}'; 在 server 的 location 內加入:(加入內容在 location 之內,location 在 server 之內) if ($arg_redirect) { 最後,重新啟動 nginxPS: 以上的$urldecode是變數名,可以更改
㈦ nginx轉跳問題,nginx默認接受所有解析過來的域名,然後轉跳到指定的IP
給每個域名配置對應的虛擬主機
然後各自虛擬主機配置段中再配置相應的反向代理
㈧ nginx能不能把一個請求過來的get參數接受,然後作為參數轉發到另一個地址
php端用__GET()獲取參數,然後用libcurl庫函數轉發至另一個URL地址。
㈨ get請求中url參數及值的過濾
判斷如果 提交的保存路徑中存在;.之類的數據 直接阻止上傳
㈩ nginx 怎麼通過傳遞的參數 進行url重寫
Nginx的Rewrite規則和Apache的Rewite規則差別不是很大,幾乎可以直接使用。比如在Apache中這樣寫規則
rewrite ^/([0-9]{5}).html$ /viewthread而在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;
}
即可實現。詳細可以去後盾人平台看看視頻教學的,很詳細高質量也很清楚的。