Nginx 301 редирект одного URL

Я пытаюсь перенаправить определенный URL, например:

http://www.domain.com/cadena-de-metas

Я делаю это через свой файл конфигурации в / sites-available /

    if ( $request_filename ~ cadena-de-metas/ ) {
            rewrite ^ https://some-other-url.com? permanent;
    }

Это работает, но, к сожалению, перенаправляет и этот URL:

http://www.domain.com/uploads/descarga-cadena-de-metas.jpg

Как я могу предотвратить это?

0
задан 6 January 2016 в 22:46
1 ответ

Избегайте использования операторов if, они не очень хороши для производительности. Попробуйте что-то вроде этого: ~ * означает совпадение регулярных выражений без учета регистра, а регулярные выражения могут быть просто литералами. Если это не сработает, дайте мне знать, потребуется небольшая настройка - не уверен, нужны ли вам речевые знаки

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

  location ~* "^/cadena-de-metas" {
    return 301 https://some-other-url.com;
  }
}

Ваш возврат может быть альтернативным, если вы хотите, чтобы он автоматически настраивался на http / https

return 301 $scheme://some-other-url.com;

Если если вы хотите перенаправить в другое место на том же сервере, это будет примерно так

return 301 $scheme://$host/subdirectory;

NB : Проведите все тесты с перенаправлениями 302, поскольку они не кэшируются, и измените перенаправления на 301, когда будете довольны с тем, как все настроено.

Вы выполняете типовые перенаправления с не-www на www домена по-разному, но вы не спрашивали, поэтому я не буду публиковать это.

А также перенаправляете вас может выполнить proxy_pass, который будет извлекать контент из другого места и отображать его по этому URL-адресу.

2
ответ дан 4 December 2019 в 13:44

Теги

Похожие вопросы