2013-03-29 59 views
1

我正在使用nginx webserver。Nginx重寫排除文件夾

我想重定向內部文件夾1 www.site.com/folder1/所有網址,但不subfolder1 www.site.com/folder1/subfolder1

我創造了這些規則nginx的配置,但沒有運氣。

位置= /文件夾/子文件夾{

}

位置/文件夾{

重寫^ /文件夾www.redirect.com永久(*);

}

我這麼想嗎?

回答

0

你的新規則應該如下。我假定有效的文件命中是可以的(即用戶知道該文件)。如果您不想要這種行爲,請使用@rw塊的內容替換try_files:

location /folder { 
    try_files $uri $uri/ @rw; 
} 
location @rw { 
    rewrite ^/folder/([^\/]*) http://www.redirect.com/ permanent; 
} 

這些應該可以工作。

+0

請給我更具體的例子。 我希望將www.test.gr/folder/中的所有網址重定向到其他靜態網址(如主頁),但www.test.gr/folder/subfolderx網址繼續工作而不重定向。 –

0

刪除「=」,因爲這是「精確」匹配。所以它只匹配文件夾本身,並且對「/folder/subfolder/a_file.html」的請求將不匹配該塊。您還需要在重寫規則中添加$ scheme。如果您只想重定向到主頁(http://www.redirect.com),則可以刪除「$ 1」部分。

location /folder/subfolder { 

} 

location /folder { 

    rewrite ^/folder(.*)$ $scheme://www.redirect.com$1 permanent; 

} 
+0

使用此解決方案,排除文件夾規則不起作用。它給了我404找不到 –

+0

你在「/文件夾/子文件夾」下提供靜態文件嗎?你需要在裏面放一個「root」指令來告訴nginx在哪裏找到這個文件。請參閱http://wiki.nginx.org/HttpCoreModule#root。如果您在文件位置添加更多信息,我可以告訴您如何執行此操作。 –

1

好了,所以這裏是一個精緻的答案,包括一些我讀過加上我的一個意見,
能夠訪問我加了try_files的子文件夾內的資產,以及301重定向中的所有其他加入了重定向的網址。

location /folder/subfolder { 
    try_files $uri $uri/ =404; 
} 

location /folder { 
    return 301 $scheme://example.com; 
}