如何在 NginX 中将 www.example.com 重定向到 example.com?

Posted

技术标签:

【中文标题】如何在 NginX 中将 www.example.com 重定向到 example.com?【英文标题】:How to redirect www.example.com to example.com in NginX? 【发布时间】:2017-09-24 18:17:01 【问题描述】:

当我们打开example.com(不带HTTPS)时,网站加载得很好,但是当我们打开www.example.com(不带HTTPS)时,它会打开“欢迎使用nginx”,但我不需要这个,我们想打开@987654323 @即使网址是www.example.com

注意:我们的网站有“HTTPS”,当我们打开example.com时,它会被重定向到https://example.com

注意:当我们打开 https://www.example.com 时,网站加载良好,但当 URL 为 www.example.comhttps://www.example.com 时,它没有被重定向。

我们在 AWS 使用 Ubuntu。

【问题讨论】:

【参考方案1】:

您是否为每个选项定义了单独的服务器? 请参阅下面的示例 sn-p。 您的问题看起来与this question 和this question 非常相似,它们都有更多信息,我不会在这里复制粘贴。

此链接也可能有帮助 creating-nginx-rewrite-rules

server 
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;


server 
    listen 80;
    server_name example.com;
    # here goes the rest of your config file
    # example 
    location / 

        rewrite ^/cp/login?$ /cp/login.php last;
        # etc etc...

    

$scheme 是协议(HTTP 或 HTTPS),$request_uri 是包含参数的完整 URI。

【讨论】:

【参考方案2】:

为此,我建议编辑您的 nginx 配置文件(通常在 /etc/nginx/sites-enabled/you-example-config 中),添加返回 301,如 here 所示,类似于:

server 
    listen 80;
    listen 443;
    server_name www.example.com example.com;
    return 301 https://example.com$request_uri;
    #[...ssl settings go here, certs etc....]

server 
    listen 443;
    server_name example.com;
    # [...ssl and main settings go here...]

这将导致所有请求返回https://example.com

【讨论】:

以上是关于如何在 NginX 中将 www.example.com 重定向到 example.com?的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 nginx Web 服务器的重写规则中将大写字母转换为小写字母?

如何使用 Nginx 修复 http 重定向?

如何同时在 Nginx 和 Apache 上托管网站(部分网站)

nginx 强制 https 适用于 www.example.com 但不适用于 example.com

如何在 MVC 应用程序(IIS7.5)中将 HTTP 重定向到 HTTPS

在虚拟机上用nginx怎么搭建lnmp