У меня есть следующая конфигурация в моем файле conf Nginx, на моем веб-сервере, обслуживающем WordPress.
Есть несколько вещей, которых я хочу достичь по заказу.
1) Если пользователь из выбранных стран, например, Филиппины, Малайзия, я хочу перенаправить его в форму запроса вместо информации о моем продукте.
2) Если это робот на гусеничном ходу, такой как Google, не перенаправляйте сервер, отправьте ему исходный URL
3) Если это гусеничный бот, а не, например, Филиппины, Малайзия, предоставьте им исходный URL.
Блок внешнего сервера
IP Mapping
map $geoip_country_code $allowed_country {
default yes;
MY no;
PH no;
}
Бот / ползунки
map $http_user_agent $limit_bots {
default 0;
~*(google|bing|yandex|msnbot) 1;
~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
}
Внутри блока сервера Я создаю блок размещения
location /product {
if ($limit_bots = 0) {
set $test A;
}
if ($allowed_country = no) {
set $test "${test}B";
}
if ($test = AB) {
rewrite ^ /enquiry/ permanent;
}
try_files $uri $uri/ /index.php$args;
//With or without line above, correct users going to /product gets 404 error
}
Блок Wordpress Specific Location, поэтому постоянная ссылка работает.
location / {
try_files $uri $uri/ /index.php$args;
}
В настоящее время, если это, например, от MY и PH, он перенаправляет правильно.
Однако, если это робот Google или любой другой орган из допустимой страны, он возвращает ошибку 404, даже если я добавил try_files.
Другие URL работают нормально.