Добрый день. Подскажите пожалуйста по сути редирект c www на без www у меня работает, но 301 код не отдает, а нужно чтобы отдавал.
Вот прописал:
server {
if ($host = www.dev.site.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = dev.site.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name dev.site.ru www.dev.site.ru;
listen 80;
return 404; # managed by Certbot
}
Весь файл выглядит так:
server {
root /var/www/dev.site.ru/public_html/;
server_name dev.site.ru www.dev.site.ru;
index index.php;
location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ {
access_log off;
log_not_found off;
expires max;
}
location / {
# add_header Access-Control-Allow-Origin *;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/dev.site.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/dev.site.ru/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
include /var/www/dev.site.ru/public_html/nginx.conf;
}
server {
if ($host = www.dev.site.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = dev.site.ru) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name dev.site.ru www.dev.site.ru;
listen 80;
return 404; # managed by Certbot
}
Если в конец добавляю:
server {
server_name www.dev.site.ru;
return 301 https://dev.site.ru$request_uri;
}
то ошибка: nginx warn conflicting server name on 0.0.0.0 80 ignored