2017-04-09 313 views
0

我對Nignx和LEMP堆棧非常陌生,並且努力編寫乾淨的URL。
我想重寫:
https://example.com/search/something&1
https://example.com/search.php?query=something&page=1
我如何着手實現這一目標?Nginx的URL重寫

+0

請檢查你的帖子。你的目標和重定向url都是一樣的 –

+0

你想把這個'https:// example.com/search/something&1'改爲'https://example.com/search.php?query = something&page = 1'或者相反 –

+0

@SahilGulati更新了我的問題:) – CodeWalker

回答

1

rewrite ^/search/(.*)&(.*)$ /search.php?query=$1&page=$2

我想你向後想着它。您要重寫/search/something&1 =>/search.php?query=something&page=1

在你的代碼會產生看起來像/search/something&1,然後nginx的將其改寫成與URL查詢參數,PHP能夠理解普通鏈接的鏈接。

+0

它可以正常工作,但是我的所有外部資源如css&js文件無法加載。 – CodeWalker

+0

@CodeWalker你需要一個單獨的位置塊,像這個位置〜* \。(?: css | js)$ {},它查找以.css或.js結尾的請求並正常發送它們,在重寫之前執行此操作,你可以使用break;以確保沒有更晚的規則得到處理。 –

0

希望這會幫助你。

([A-Za-z]+)匹配所有小寫或大寫字母,一個或多個。

([\d]+)匹配一位或一位以上的數字。

rewrite /search/([A-Za-z]+)&([\d]+) /search.php?query=$1&page=$2; 

這將重定向只有$ REQUEST_URI這遵循這些模式,如

/search/something&12 
/search/xxxyAAA&1212 
/search/XXyyZZ&12 

而且並不妨礙你CSS,JS執行請求重寫。