我正在尝试将促销子域附加到我的网站上,该网站已经在https上,然后使用重定向网址重定向到网站中的另一个页面.例如,基本上如果我的网站是https://example.com并且有一个页面https://example.com/xyz/xyz/promo,那么当我输入https://promo.example时我想要一个浏览器重定向.com到这个页面.我已经设置了所有相关的AWS route 53设置.
我的Nginx服务器块有这个
server { listen 80 default_server; listen [::]:80 default_server; return 301 https://example.com$request_uri; } server { server_name www.example.com; return 301 https://example.com$request_uri; } server { server_name example.com; return 301 https://example.com$request_uri; } server { server_name promo.example.com; return 301 https://example.com/xyz/xyz/promo; } ssl_certificate /..path/..; ssl_certificate_key //..path/..; ssl_dhparam /..path/...; ssl_trusted_certificate /..path/..; add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload'; ssl_prefer_server_ciphers on; ssl_ciphers .......; //hidden ssl_protocols TLSv1.2 TLSv1.1 TLSv1; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_buffer_size 1400; spdy_headers_comp 0; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=86400; resolver_timeout 10; server { listen 443 ssl spdy; server_name example.com; include /etc/Nginx/helper.conf; root /var/www/example/ ; index index.PHP index.html; charset utf-8; location / { add_header "Access-Control-Allow-Origin" "*"; try_files $uri $uri/ /index.PHP$is_args$args; } location ~ \.PHP${ fastcgi_split_path_info ^(.+\.PHP)(/.+)$; fastcgi_pass unix:/var/run/PHP5-fpm.sock; fastcgi_index index.PHP; include fastcgi_params; } location ~ /\.ht { deny all; } }
目前的行为:
当我直接在没有https的情况下输入promo.example.com时,它会正确重定向.但如果我输入https://promo.example.com,它只会向我显示example.com,其网址为https://promo.example.com
预期行为:
如果我输入https://promo.example.com,它应该重定向到https://example.com/xyz/xyz/promo
我不能把https://promo.example.com然后重定向到服务器块,因为Nginx会抛出错误.
如何重定向https://promo.example.com转到https://example.com/xyz/xyz/promo
由于使用Strict-Transport-Security标头,浏览器自动提供301重定向,因此从未使用过此服务器块:
原文链接:https://www.f2er.com/php/138076.htmlserver { server_name promo.example.com; return 301 https://example.com/xyz/xyz/promo; }
端口重定向80-> 443甚至在连接到服务器的浏览器之前发生,因此Nginx总是基于端口443服务最新的服务器块.这应该可以帮助您:
server { listen 443 ssl; listen 80; server_name promo.example.com; return 301 https://example.com/xyz/xyz/promo; }