基于GeoIP的Apache重写规则



目前,我正在尝试基于GeoIP重定向域。我已经安装了GeoIP模块。我有下面的domain.conf文件。问题是登录正常,就像我的example.com将是印度用户的默认登录,而当美国人访问该网站时,us.example.com将是域名一样。但目前正在获得

redirected you too many times. 

注意:域正在按预期重定向,但出现上述错误。我使用了反向代理,因为我的应用程序在8080端口的docker中运行。

如果有人能给出正确的apache重写规则,那就太好了。

<VirtualHost *:80>
ServerName example.com
ServerAlias example.com us.example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
GeoIPScanProxyHeaders On

RewriteEngine on
RewriteCond "%{ENV:GEOIP_COUNTRY_CODE}" ^US$
RewriteRule http://us.example.com$1

LogFormat "%a %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
ErrorLog ${APACHE_LOG_DIR}/example.com-error_log
CustomLog ${APACHE_LOG_DIR}/example.com-access_log common
</VirtualHost>

感谢Advanace

尝试:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^us.example.com$ [NC]
RewriteCond "%{ENV:GEOIP_COUNTRY_CODE}" ^US$
RewriteRule ^ http://us.example.com [R=302,L]

您需要重新启动apache,并确保在尝试查看以上操作是否有效之前清除浏览器缓存。

编辑:

OP希望将所有非印度用户重定向到example.co.

以下是解决方案:

RewriteEngine On
RewriteCond %{HTTP_HOST} !(?:^|.)example.co$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^IN$
RewriteRule ^ http://example.co [R=302,L]

相关内容

  • 没有找到相关文章

最新更新