Постоянное перенаправление Nginx (НЕ WWW на WWW) не работает

Привет, ребята, я хочу, чтобы все мои запросы URL-адресов НЕ-WWW были перемещены навсегда, а также переписаны в WWW, и я также пытался следовать существующим решениям в этих случаях Nginx no-www to www и www to no-www, но у меня это все равно не сработало.

например Я хочу, чтобы example.com или example.com/* были переписаны на www.example.com или www.example.com/*

Я запускаю PHP-FPM с nginx и memcache.

ниже мой конфиг

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;
.......
}

Ниже мой ответ на завиток

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

person Nilesh K    schedule 21.08.2015    source источник
comment
Вы пробовали закручивать -L или --location? Потому что curl не будет следовать перенаправлению, если вы этого не сделаете.   -  person mim.    schedule 21.08.2015
comment
Я пытался, но -L просто выводит html. Ну, я возвращаю заголовки, и если бы конфиг работал, он бы навсегда переместился.   -  person Nilesh K    schedule 21.08.2015
comment
Тогда это ваш локальный env или live? Единственное, что приходит мне в голову, если это живой днс, может вызвать что-то вроде этого.   -  person mim.    schedule 21.08.2015
comment
Это в реальной среде, развернуто на ec2 и имеет хороший трафик. На DNS-сервере godaddy есть запись для IP-адреса ec2.   -  person Nilesh K    schedule 22.08.2015


Ответы (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/*;

Наконец-то я скопировал свой файл из Sites-Available в папку 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 с помощью приведенного выше кода.

Я сделал вызов curl без www и получил следующий правильный ответ.

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/
person Nilesh K    schedule 27.08.2015