2016-06-27 52 views
0

我有一些微軟服務哲學構建的軟件。對他們 - 這是主辦的example.com/變得毫無用處,所以我希望用戶被重定向到example.com/dir/其中託管另一項服務。在StackOverflow最流行的解決方案是使用下面的代碼在配置文件中:從example.com/永久重定向到https://www.example.com/dir/

location =/{ 
    return 301 $scheme://$http_host/dir/; 
} 

location =/{ 
    return 301 https://$http_host/dir/; 
} 

均不能在我的服務器 - 服務器返回503 - to many computations。堆棧跟蹤顯示沒有規則無限規則,因此此代碼可能返回load-balancer

這個問題還有其他解決方案嗎?我最近3天才仔細搜索了StackOverflowServerFault,並找到了解決方案。

回答

0

與我的隊友們一起研究後,不僅return 301 url; succesfuly重定向用戶。雖然文件說,應避免使用rewrite什麼工作是:

server { 
    ... 
    rewrite ^/$ https://$http_host/dir/ permantent; 
    ... 
} 

permantent聲明是負責作爲一個普通的重定向。

重要: 在nginx的^是一個正則表達式的與進來的字符串的開頭和$標誌是正常regex符號它代表theEndOfString。所以正則表達式^/$表示匹配iff url等於/

學分:

希望這將挽救一個人的週末時間和金錢。

-2

=符號無效。

location/{ 
    return 301 https://$http_host/dir/; 
} 

但是,這將在重定向循環結束,所以更具體:已經發生

location ~ ^[/]?$ { 
    return 301 https://$http_host/dir/; 
} 
+0

這不是 - '='符號意味着匹配必須是精確的。 Google文檔。 – xenteros

+0

我糾正了。 –

+0

不是。你的正則表達式會匹配/ dir /。每個網址都會被重定向。你的答案是從另一個相似的主題複製。 – xenteros

相關問題