2016-11-17 102 views
0

我正在嘗試幾個小時來解決這個問題,那應該不是那麼讓人頭疼。重寫url段以獲取參數nginx

我需要一個正確的代碼爲nginx服務器來實現這一點。

我有一個這樣的網址: https://www.example.com/share/userid/file/

我想將它改寫爲: https://www.example.com/share/?id=userid&key=file/

我已經在這裏計算器幾種解決方案嘗試過,但他們都沒有工作。

我已經試過這樣:

rewrite ^/share/(.*)/(.*)$ /share/index.php?id=$1&key=$2 ; 

這工作,如果我把一個index.php文件存在,但我不能這樣做,原因/股/是一個固定鏈接,而不是一個實際的文件夾(WordPress的)。如果我這樣做:

rewrite ^/share/(.*)/(.*)$ /share/?id=$1&key=$2 ; 

我得到一個404 nginx錯誤。

它似乎也是^/share /(。)/(。)$實際上並沒有觸發重寫,所以這一定是錯誤的,雖然我在看nginx重寫文檔並且看起來沒問題。

任何想法?我也嘗試try_files沒有成功。

謝謝

UPDATE:

OK所以此工程

rewrite ^(/share/)([0-9]+)/(.*)/$ https://$server_name/share/?id=$2&key=$3 last; 

但是由於某種原因,如果我這樣做是行不通:

rewrite ^(/share/)([0-9]+)/(.*)/$ /share/?id=$2&key=$3 last; 

我添加$ server_name使其工作,任何人都可以解釋我爲什麼?

回答

-1
Rewrite /id/(.*)/key/(.*) ?id=$1&key=$2 

https://www.example.com/share//id/userid/key/file/ 輸出URL將上述 希望這不會工作

+0

我需要nginx的代碼,我不使用Apache。 –

+0

編輯答案 –

+0

謝謝,但那幾乎可以匹配任何東西,請檢查我的更新 –

0

我終於解決了這個問題我自己:

rewrite ^(/share/)([0-9]+)/(.*)/$ https://$server_name/share/?id=$2&key=$3 last; 
我用 ([0-9]+)事業的第一個參數

是一個整數

但是,由於某種原因,如果我這樣做,它不起作用:

rewrite ^(/share/)([0-9]+)/(.*)/$ /share/?id=$2&key=$3 last; 

我不得不添加

https://$server_name 

問候