Nginx
Nginx:將 http 和 https 根目錄重定向到子目錄
我正在嘗試將 nginx 中 http 和 https 的根域重定向到同一子目錄(https):
所以例如
http://example.com -> https://example.com/subdirectory https://example.com -> https://example.com/subdirectory
在我看來,這很簡單,但我正在努力實現這一目標。我嘗試過使用各種重寫並返回 301,但總是以重定向循環結束。
我目前的配置(導致循環):
server { listen 80; server_name example.com; return 301 https://$server_name/subdirectory; } server { listen 443 ssl spdy; server_name example.com; return 301 https://$server_name/subdirectory; }
所以基本上,我試圖從根域重定向到 https 上的同一子目錄,無論根域是通過 http 還是 https 請求的。
此配置將執行您想要的操作:
server { listen 80; server_name example.com; return 301 https://$server_name/subdirectory; } server { listen 443; server_name example.com; location = / { return 301 https://$server_name/subdirectory; } }
說明
= /
符表示完全匹配,因此它只匹配虛擬伺服器的確切根 URI。
顯然,如果您不從 ssl vhost 的此行為中排除 location 子目錄,它將不起作用。
server { listen 80; server_name example.com; return 301 https://$server_name/subdirectory; } server { listen 443 ssl spdy; server_name example.com; location /subdirectory { # Your stuff } location = / { return 301 https://$server_name/subdirectory; } }