#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, мне нужно, чтобы он перенаправлял на:
Возможно ли это с моими ограниченными знаниями .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]