簡體   English   中英

Nginx 從正則表達式創建新變量

[英]Nginx create new variable from regex

我正在嘗試設置從一個域到另一個域的重定向,同時保留請求 uri 和/或請求的子域,以便https://foo.bar.domain.com/file很好地重定向到https://foo.bar.domain.org/file

我可以在我的 nginx 配置中使用非常簡單的規則,類似於:

server_name domain.com *.domain.com;
root /var/www/html/domain.com/public/www;
index index.php index.html index.htm index.txt index;

location / {
    return 302 $scheme://$host$request_uri;
}

但是,我的返回返回相同的 URL,因為 $host 保留了兩個請求的子域,但也保留了 TLD。 有沒有辦法設置類似於$host2 = regex_replace($host, '.com$', '.org')新變量,然后使用它?:

PSEUDO-SOLUTION

location / {
    $host2 = regex_replace($host, '.com$', '.org')
    return 302 $scheme://$host2$request_uri;
}

我非常希望保持它盡可能簡單,而不引入重寫到新的偽位置,如果可能的話,URL 被正則表達式處理(即類似於我的偽解決方案),因為我不會是維護代碼的人.

看來我已經找到了一種方法來做到這一點。 我添加了

map $host $newhost {
    "~^(.*).com" $1.org;
    default $host;
}

在服務器阻塞之前,現在正在重定向

location / {
    return 302 $scheme://$newhost$request_uri;
}

希望這對將來的某些人有用,或者如果存在,請隨時向我展示更好的方法。

暫無
暫無

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

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