Правило перенаправления Nginx не влияет - PullRequest
1 голос
/ 08 июня 2019

Попытка сделать простое перенаправление:

rewrite https://url.example.com(.*) https://example.com/plugins/url permanent;

В любое время, когда нажата url.example.com, я хочу, чтобы он перенаправил на этот конкретный путь.

РЕДАКТИРОВАТЬ:

Попробую объяснить это лучше, поскольку я пытаюсь перенаправить на определенный домен из другого.

server {
    server_name example.com plugin.example.com;
    root /home/www/example.com/public;
}

Я вижу location, используемый для перенаправлений, таких как:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Но не уверен, как использовать его в моем случае, который должен изменить plugin.example.com на example.com/plugin.

Например:

http://plugin.example.com
https://plugin.example.com
https://plugin.example.com/blah
https://plugin.example.com/blah/more

Всеони должны перенаправить на:

https://example.com/plugin

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Если исходный URL равен https://url.example.com или https://url.example.com/, то нормализованный URI, используемый директивами rewrite и location, будет /. Схема, имя хоста и строка запроса были удалены.

Чтобы выполнить постоянное перенаправление на URL с другим именем хоста:

Использование rewrite (подробности см. в этом документе ):

rewrite ^/$ https://example.com/foo permanent;

Или с использованием location и return (подробности см. в этом документе ):

location = / {
    return 301 https://example.com/foo;
}

Второе решение более эффективно, так как нет регулярных выражений для обработки.

Если исходный URL-адрес содержит строку запроса: rewrite добавит его автоматически, если не добавлен конечный ?. return не будет, но его можно добавить, добавив $is_args$args.


Если схема и имя хоста не изменены, то оба утверждения можно упростить:

rewrite ^/$ /foo permanent;

Или:

location = / {
    return 301 /foo;
}
0 голосов
/ 24 июля 2019

Вы можете создать отдельные серверы для example.com и plugin.example.com.И создайте перенаправление внутри сервера plugin.example.com.

server {
    server_name plugin.example.com;
    return 301 https://example.com/plugin;
}

server {
    server_name example.com;
    root /home/www/example.com/public;
}
...