0

我的用例是根据用户国家/地区显示不同的内容。我确实在不同的目录中为不同的国家/地区提供了单独的 HTML5 页面。我想根据用户的位置在内部将用户重定向到不同的目录。我无法遵循有关在 rhel apache2 服务器上使用 GeoLite2 数据库设置 mod_geoip2 的文档。

我尝试使用 mod_geoip apache 包,但我发现 maxmind 不再更新 GeoLite 数据库。因此,我需要使用 GeoLite2 数据库和 mod_geoip2 包。

我习惯了重定向规则,所以我可以在 httpd.conf 文件中做代码的东西

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^IN$
RewriteRule ^(.*)\.html$ /path/to/directory$ [PT]
4

1 回答 1

0

我相信根据https://blog.ip2location.com/knowledge-base/redirect-url-with-the-apache-web-server-using-ip2location/中的指南,使用 IP2Location Apache 模块要容易得多

基本上,你需要三样东西。

下载这 3 个东西并将它们解压缩到一个名为 ip2location 的文件夹中。

导航到 IP2Location C Libary 文件夹并使用以下命令对其进行编译:

sudo autoreconf -i -v --force
sudo ./configure
sudo make
sudo make install

现在导航到 IP2Location Apache Module 文件夹并使用以下命令对其进行编译:

sudo apxs2 -i -a -L /usr/local/lib/ -I ../IP2Location-C-Library-master/libIP2Location/ -l IP2Location -c mod_ip2location.c
sudo ln -s /usr/local/lib/libIP2Location.so.1 /usr/lib/libIP2Location.so.1

在您的 /etc/apache2/apache2.conf 文件中,您可以在编辑 IP2LocationDBFile 后粘贴以下内容以使用您自己的 BIN 文件路径:

<IfModule mod_ip2location.c>
  IP2LocationEnable On
  IP2LocationDetectProxy Off
  IP2LocationSetmode ENV
  IP2LocationDBFile "/home/admin/ip2location/IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE.BIN"
</IfModule>

重新启动 Apache 以使更改生效。

sudo systemctl restart apache2

现在,您可以在 .htaccess 文件中添加重定向逻辑。下面的示例用法:

RewriteEngine On
RewriteCond %{ENV:IP2LOCATION_COUNTRY_SHORT} ^SE$
RewriteRule ^(.*)$ https://www.google.se/ [L]
RewriteCond %{ENV:IP2LOCATION_COUNTRY_SHORT} ^MY$
RewriteRule ^(.*)$ https://www.google.com.my/ [L]
于 2019-09-18T05:55:31.797 回答