[英]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.