перенаправление .htaccess с указанием местоположения Cloudflare

#apache #.htaccess #redirect #geolocation #cloudflare

#apache #.htaccess #перенаправление #геолокация #cloudflare

Вопрос:

Я действительно изо всех сил пытаюсь поместить перенаправления в мой файл .htaccess на основе кода страны cloud flare. Я получаю либо «слишком много ошибок перенаправления», либо 500 внутренних ошибок, используя примеры со всего этого сайта.

В настоящее время у меня есть это:

 Options  FollowSymLinks
RewriteEngine on

SetEnvIf CF-IPCountry "(.*)$" Country=$1

RewriteCond %{ENV:Country} GB
RewriteRule ^(.*)$ http://example.com/$1 [R,L]
  

Поэтому мне нужно, чтобы домен по умолчанию был http://example.com

но если код страны в ГБ поступает, например, из cloudflare, мне нужно, чтобы он перенаправлял на:

http://example.com/gb

Возможно ли это с моими ограниченными знаниями .htaccess?

Ответ №1:

Попробуйте с:

 Options  FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP:CF-IPCountry} ^GB$
RewriteCond %{REQUEST_URI} !(?:gif|png|jpg|jpeg|css)$ [NC]
RewriteRule !^gb/ /gb%{REQUEST_URI} [NC,NE,R,L]
  

Перенаправление http://example.com/test http://example.com/gb/test , когда запрос поступает от пользователя, с CF-IPCountry=GB которым еще не используется ссылка с /gb/

Комментарии:

1. Привет, это действительно работает так, как ожидалось, однако это нарушает все мои ресурсы (изображения / файлы css и т.д.), Поскольку я думаю, что это также перенаправляет запросы на них. есть ли способ избежать этого, не имея копии всего в подпапке?

2. Я добавляю одно правило, чтобы избежать перезаписи для изображений или файлов css.

3. Этот код работал, но… что, если я хочу добавить больше стран для перенаправления на тот же URL? возможно ли это (например, перенаправление Мексики и Испании на mydomain.com/es / И последний вопрос, возможно ли, чтобы он просто перенаправлял, если это домашняя страница? Большое спасибо

4. Вы можете использовать !^(gb|mx|sp)/ /gb%{REQUEST_URI} [NC,NE,R,L]

5. Для домашней страницы RewriteRule ^$ /gb/ [R,L]