サーバー - Apache 2.4。モジュール - mod_geoip、mod_rewrite; WordPressサイト
mod_geoipをインストールし、サイトの全ページから.htaccessリダイレクトを設定しようとしました。 https://example.com/ 〜へ https://example.com/restricted/ モナコからのユーザーのために。
私が最初に試すルールは:
RewriteEngine On
GeoIPEnable On
RewriteCond% {ENV: GEOIP_COUNTRY_CODE} ^ (MC) $
RewriteRule ^ (. *) $ Https://example.com/restricted/$1 [L]
その結果、モナコの市民はエラーERR_TOO_MANY_REDIRECTSを受け取ります。こんな感じです:
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:16 +0000] "GET / HTTP/1.1" 302 3942 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KH$
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:16 +0000] "GET /restricted/ HTTP/1.1" 302 664 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.$
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:16 +0000] "GET /restricted/restricted/ HTTP/1.1" 302 678 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebK$
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:16 +0000] "GET /restricted/restricted/restricted/ HTTP/1.1" 302 692 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) Ap$
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:16 +0000] "GET /restricted/restricted/restricted/restricted/ HTTP/1.1" 302 706 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; $
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:17 +0000] "GET /restricted/restricted/restricted/restricted/restricted/ HTTP/1.1" 302 720 "-" "Mozilla/5.0 (Windows NT 6.1; $
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:17 +0000] "GET /restricted/restricted/restricted/restricted/restricted/restricted/ HTTP/1.1" 302 734 "-" "Mozilla/5.0 (Windows N$
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:17 +0000] "GET /restricted/restricted/restricted/restricted/restricted/restricted/restricted/ HTTP/1.1" 302 748 "-" "Mozilla/5.0 (Wi$
www.example.com:443 40.108.122.138 - - [29/Jan/2019:21:41:17 +0000] "GET /restricted/restricted/restricted/restricted/restricted/restricted/restricted/restricted/ HTTP/1.1"
等
私が試して2番目のルールです:
RewriteEngine On
GeoIPEnable On
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} (MC) [NC]
RewriteRule .* https://example.com/restricted/ [R=302,L]
その結果、モナコの市民はexample.comに行きます - >にリダイレクト https://example.com/restricted/ - できます; example.com/about/ - >にアクセスします。にリダイレクト https://example.com/restricted/ - 動作しません。
助けてください、どうぞ、私の過ちは何ですか?すべてのページからモナコのユーザーのために1つのページへのリダイレクトを設定するにはどうすればいいですか?
注意: .htaccessも含まれています:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
sites-enabled / example.confも含まれています:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
ServerAdmin support@example.com
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
ServerAlias example.com
ServerAdmin support@example.com
RewriteEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
ありがとうございました!