基于 GeoIP 的 Apache 重写规则
Apache Rewrite Rule based on GeoIP
目前,我正在尝试基于 GeoIP 重定向域。我已经安装了 GeoIP 模块。我有以下 domain.conf 文件。问题是登录工作正常,就像我的 example.com 将默认用于印度和我们的用户。example.com 将是美国用户访问该站点时的域。但目前
redirected you too many times.
注意:域正在按预期重定向但出现上述错误。我使用了反向代理,因为我的应用程序是 运行 in docker on port 8080.
如果有人能给出正确的 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
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]
目前,我正在尝试基于 GeoIP 重定向域。我已经安装了 GeoIP 模块。我有以下 domain.conf 文件。问题是登录工作正常,就像我的 example.com 将默认用于印度和我们的用户。example.com 将是美国用户访问该站点时的域。但目前
redirected you too many times.
注意:域正在按预期重定向但出现上述错误。我使用了反向代理,因为我的应用程序是 运行 in docker on port 8080.
如果有人能给出正确的 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
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]