2017-08-24 57 views
1

我試圖建立一個nginx的重寫規則,這樣我可以採取以下網址:爲什麼在我的NginX conf文件中這一個重寫規則會破壞我的網站?

http://example.com/xyz/

...並對其進行分析,以便xyz被當作一個變量的值,我可以在PHP中使用。

我有這樣的重寫規則:

rewrite ^/(.*)/ /index.php?var=$1 last; 

然而,這似乎打破我的網站。當網站第一次加載時,所以URL只是http://example.com/,並且沒有變量集,我的JavaScript或CSS文件都沒有找到。如果我註釋掉這一個重寫行,那麼我的網站工作正常。

如何設置我的重寫規則,在沒有設置變量時不會中斷我的網站? 請注意,var的值始終是三個字母的代碼,如果這有助於限制它。

+0

當它是'http:// example.com/xyz/abc'時會發生什麼? –

回答

1

您的重寫規則幾乎匹配所有內容。任何具有第二個/(甚至不在末尾)的URI都將符合您的規則。

您需要限制的正則表達式匹配只有你感興趣的URI的

,匹配以結尾的URI一個/(如/foo//foo/bar/),你需要的$主播:^/(.*)/$

要僅匹配第一路徑元件(例如/foo/但不/foo/bar),可使用的字符類,它不包括/^/([^/]*)/$

要匹配三個字母的代碼,請使用\w來匹配單詞字符和{}語法以指示長度。 nginx需要正則表達式中被引用如果它包含的字符{}"^/(\w{3})/$"

this useful resource正則表達式。

相關問題