Назад | Перейти на главную страницу

Невозможно настроить перенаправление 301 на веб-сервере Nginx

Я пытаюсь настроить перенаправление 301 для всех доменов, размещенных на моем сервере Nginx, и все попытки заставить его работать пока не увенчались успехом. Моя конфигурация Nginx ниже.

Файл: / и т.д. / Nginx / сайты-доступные / все-мои-сайты

# 301 Redirects
server {
    server_name www.example1.com;
    return 301 $scheme://example1.com$request_uri;
}

server {
    server_name www.example2.com;
    return 301 $scheme://example2.com$request_uri;
}

# The Real Deal
server {
    listen 80;
    server_name example1.com example2.com;

    [...]

}

Я также пробовал эти конфигурации безрезультатно.

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

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

# The Real Deal
server {
    listen 80;
    server_name example1.com example2.com;

    [...]

}

и

# 301 Redirects
server {
    listen 80 default_server;
    server_name www.example1.com;
    return 301 $scheme://example1.com$request_uri;
}

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

# The Real Deal
server {
    listen 80 default_server;
    server_name example1.com www.example1.com example2.com www.example2.com;

    [...]

}

Что я делаю не так? Я действительно понятия не имею. (Я старался изо всех сил, гуглил и ссылался на документацию.)

ОБНОВИТЬ: На самом деле, www.example2.com просто перенаправляет на example2.com. Но www.example1.com - нет. Это странно, и я до сих пор понятия не имею.

Конфигурация Nginx действительно правильная. Проблема в моей конфигурации DNS. Я использовал сопоставление поддоменов с подстановочными знаками для A и AAAA записи на example1.com (например, *.example.com A 123.456.67.8), когда в ней УЖЕ есть TXT запись для www.example1.com.

Вы не можете сопоставить поддомен с подстановочными знаками, если один из поддоменов для этого домена уже имеет запись DNS!

Я предполагаю, что вы хотите перенаправить свои домены с www на не www.

Если это так, вы можете попробовать следующий способ, который я уже использую в своей конфигурации nginx.

    server {
        listen 80;
        server_name  www.example1.com;
        rewrite ^(.*) http://example1.com$1 permanent; 
}