Прямо сейчас мой nginx переписывает несколько доменов в один основной домен, который мы используем. Вот одно правило из моей конфигурации:
server {
listen X.X.X.X:80;
server_name .exampleblog.org;
rewrite ^(.*) http://blog.example.org$1 permanent;
}
Каждый запрос к ** exampleblog.org * перенаправляется на blog.example.org
Теперь я хочу www.exampleblog.org/+ и exampleblog.org/+ для перенаправления пользователя на нашу страницу Google Plus. Пробовал разные версии:
server {
listen X.X.X.X:80;
server_name .exampleblog.org;
location /+ {
rewrite ^ https://plus.google.com/12345678901234567890/ permanent;
}
rewrite ^(.*) http://blog.example.org$1 permanent;
}
Выше и другие версии просто перенаправляют на blog.example.org/+ - Что я делаю не так?
Директивы в nginx не обязательно применяются в том порядке, в котором они указаны в файле конфигурации. Перезапись на уровне сервера действует до выбора местоположения, и оно всегда совпадает, поэтому перенаправляет все. Вам нужно второе место вроде этого:
server {
listen x.x.x.x:80;
server_name .exampleblog.org;
# Match /+ requests exactly
location = /+ {
# I prefer return 301 instead of rewrite ^ <target> permanent,
# but you can use either
return 301 http://plus.google.com/1234567890/;
}
# Match everything else
location / {
return 301 http://blog.example.org$request_uri;
}
}