簡體   English   中英

Nginx用排除重寫文件夾

[英]Nginx rewrite a folder with exclude

我正在使用Nginx Web服務器。

我想重定向folder1 www.site.com/folder1/內的所有URL,但不重定向subfolder1 www.site.com/folder1/subfolder1

我為nginx配置創建了這些規則,但是沒有運氣。

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

}

位置/文件夾{

重寫^ / folder(。*)www.redirect.com永久;

}

我想念什么嗎?

好的,這是一個精致的答案,其中包括我已閱讀的一些評論以及我的其中一項,
為了能夠訪問子文件夾中的資產,我添加了try_files ,並在所有其他URL中添加了301重定向以進行重定向。

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

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

您的新規則集應如下所示。 我假設有效的文件命中是可以的(即用戶知道該文件)。 如果您不希望出現這種情況,請用@rw塊的內容替換try_files:

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

這些應該工作。

刪除“ =”,因為那是“完全”匹配。 因此,它僅與文件夾本身匹配,並且對“ /folder/subfolder/a_file.html”的請求將與該塊不匹配。 另外,您還需要在重寫規則中添加$ scheme。 而且,如果您只想重定向到主頁( http://www.redirect.com ),則可以刪除“ $ 1”部分。

location /folder/subfolder {

}

location /folder {

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM