当前,我在Nginx中具有以下用于GeoIP重定向的设置:
set $fromAU 0;
set $isAUuri 0;
set $isUSuri 0;
if ( $geoip_country_code = "AU" ) { set $fromAU 1; }
if ( $request_uri ~* "^/australia" ) { set $isAUuri 1; }
if ( $request_uri ~* "^/usa-can" ) { set $isUSuri 1; }
if ( $request_uri ~* ^/(wp-admin|wp-login\.php) ) { set $isUSuri 1; }
set $redirectableAU "${fromAU}${isAUuri}";
if ( $redirectableAU = "10" ) { rewrite "^(/australia)?(.*)" $scheme://$host/australia permanent; }
if ( $redirectableAU = "01" ) { rewrite "^(/australia)?(.*)" $scheme://$host/usa-can permanent; }
set $redirectableUS "${fromAU}${isUSuri}";
if ( $redirectableUS = "00" ) { rewrite "^(/australia)?(.*)" $scheme://$host/usa-can permanent; }
它按预期工作,但有一个小问题:
domain.com/wp-admin->可以正常工作
domain.com/usa-can/wp-admin->可以正常工作
domain.com/australia/wp-admin->重定向到/ usa-can
我正在尝试为美国和非盟地区设计GeoIP重定向,在前端工作正常,但是问题在于最后的wp-admin重定向,任何见解将不胜感激:)
答案 0 :(得分:0)
我将使用nginx的map模块,因为它针对快速查找进行了优化。 https://nginx.org/en/docs/http/ngx_http_map_module.html
# partly adopted from
# https://www.digitalocean.com/community/tutorials/how-to-use-nginx-s-map-module-on-ubuntu-16-04
# My countries
#
map $geoip_country_code $fromAU {
default 0;
AU 1;
}
map $request_uri $redirect_uri {
default /wp-admin;
~*^/australia /australia/wp-admin;
~*^/usa-can /usa-can/wp-admin;
}
if ( $fromAU = "1" ) { redirect $scheme://$host/$redirect_uri permanent; }
if ( $fromAU = "0" ) { redirect $scheme://$host/$redirect_uri permanent; }