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

nginx перезаписывает базовый URL

Мне нужен корневой URL

http://www.example.com

перенаправить на

http://www.example.com/something/else

Это связано с тем, что какой-то странный плагин WP всегда устанавливает cookie на базовом URL-адресе, что не позволяет мне его кешировать.

Я пробовал эту директиву:

location / {
    rewrite  ^  /something/else  break;
}

Но 1) перенаправления нет и 2) страницы начинают отправлять на мой сервер более 1000 запросов. С этим:

 location / {
        rewrite  ^  http://www.example.com/something/else  break;
    }

Chrome сообщает о цикле перенаправления.

Какое правильное регулярное выражение использовать?

Вы действительно хотите соответствовать именно корневой URL в блоке местоположения, а не "абсолютно все":

location = / {
    rewrite ^ /something/else break;
}

Это должно сработать:

location / {
   rewrite  ^/$  /something/else  break;
}

В rewrite заявление выполняет внутреннюю перезапись по умолчанию, если целевой не является абсолютным URL-адресом или вы не установили redirect или permanent флаги. Что-то вроде этого вернет клиенту HTTP-перенаправление:

rewrite ^/$ /something/else redirect;

Или вы можете сделать это:

location = / {
     rewrite ^/$    http://example.com/an/other/path;
}

Nginx автоматически отправляет клиенту перенаправление HTTP 302, когда перезаписываемый URL-адрес начинается со схемы http.