【问题标题】:Nginx Permanent Redirect (NON-WWW to WWW) not workingNginx 永久重定向(非万维网到万维网)不起作用
【发布时间】:2015-11-15 20:13:58
【问题描述】:

嗨,伙计们,我希望我的所有非 WWW url 请求永久移动并重写到 WWW,我也尝试在这些方面遵循现有解决方案 Nginx no-www to www and www to no-www 但它仍然对我不起作用。

例如我希望 example.com 或 example.com/* 重写为 www.example.com 或 www.example.com/*

我正在使用 nginx 和 memcache 运行 PHP-FPM

下面是我的配置

server {
listen 80;
server_name abc.com;
return 301 http://www.example.com$request_uri;
}

server {
        listen 80;
        server_name www.example.com;

        root /srv/www/abc;
        index index.php index.html index.htm;
.......
}

以下是我的 curl 回复

neel:~ nilesh$ curl -I http://example.com
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Fri, 21 Aug 2015 19:00:54 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.9-1ubuntu4.11
X-Drupal-Cache: HIT
Etag: "1440178291-0"
Content-Language: en
X-Generator: Drupal 7 (http://drupal.org)
Link: <http://example.com/>; rel="canonical",<http://example.com/>; rel="shortlink"
Cache-Control: public, max-age=1800
Last-Modified: Fri, 21 Aug 2015 17:31:31 +0000
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Vary: Cookie
Vary: Accept-Encoding

【问题讨论】:

  • 您是否尝试将-L--location 提供给curl?如果你不这样做,因为 curl 不会跟随重定向。
  • 我试过但 -L 只是打印出 html。好吧-我返回标头,如果配置有效,它将永久移动返回。
  • 那么这是您当地的环境还是现场环境?只有我想到的事情,如果它是实时 dns 会导致这样的事情。
  • 这是现场环境,部署在ec2上,流量不错。 godaddy dns上有ec2 IP的一条记录

标签: php redirect drupal nginx permanent


【解决方案1】:

我终于解决了我的问题。我检查了我的 nginx.conf,它指向 /etc/nginx/sites-enabled 和 /etc/nginx/conf.d

我的 nginx.conf->

 ##
        # Virtual Host Configs
        ##
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

我终于将我的文件从可用站点复制到文件夹站点启用。事实上,我一直保持同步。

下面是我在服务器标签下使用的代码

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

server {
        listen 80;
        server_name www.example.com;
        #listen [::]:80 default_server ipv6only=on;
        root /srv/www/example;
#rest config goes below

.......

现在我所有的非www流量都是301永久移动并用上面的代码重写为www。

我对非 www 进行了 curl 调用,得到了以下正确响应。

neel:~ nilesh$ curl -I http://example.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 27 Aug 2015 08:39:38 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://www.example.com/

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 2015-01-09
    • 2015-10-15
    • 2015-12-16
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多