2015.
11.
21
13:10:47
結論から書いておきます。
やり方はいろいろあるでしょうが、今回はリダイレクト先をRewrite対象外とすることで対処しました。
例えば
のような形ですね。
それでは、詳細を書いていきます。
.htaccessを使って、特定のIPアドレスからのアクセスを拒否したくてですね。
単純に拒否するだけであれば
のように書けば良いのですが、今回は特定のページを表示したかったのです。
そこで、以下のように書きました。
「198.51.100.2」からのアクセスであれば「deny.html」にリダイレクトする指定です。
これで、よし!
……と思ったら、ダメでした。
Google Chromeさんに
このウェブページにはリダイレクト ループが含まれています
とか怒られてしまったのです。
あれ?無限ループしてる(--?
……してました。
「198.51.100.2」からの全アクセスを「deny.html」にリダイレクトしていますからね。
「deny.html」に対するアクセスも「deny.html」にリダイレクトされちゃうのです。
こりゃ、困ったね。
ということで、無限ループを回避することにしました。
やったのは単純に「deny.htmlへのアクセスはリダイレクトしない」条件を追加するだけです。
例えば、こんな感じφ(--)
REQUEST_URIに「deny.html」が含まれていないときが対象だよ!と追加指定しています。
これで無事に、無限ループは回避されました。
まぁ、他にもやり方はいろいろあると思いますけどね。
お手軽な回避方法の一例として、書いてみました。
そんな感じ\(--)/
やり方はいろいろあるでしょうが、今回はリダイレクト先をRewrite対象外とすることで対処しました。
例えば
RewriteEngine on
RewriteCond %{REQUEST_URI} !(hoge\.html)
RewriteRule ^(.*)$ /hoge.html [R,L]
RewriteCond %{REQUEST_URI} !(hoge\.html)
RewriteRule ^(.*)$ /hoge.html [R,L]
のような形ですね。
それでは、詳細を書いていきます。
.htaccessを使って、特定のIPアドレスからのアクセスを拒否したくてですね。
単純に拒否するだけであれば
deny from 198.51.100.2
のように書けば良いのですが、今回は特定のページを表示したかったのです。
そこで、以下のように書きました。
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^198\.51\.100\.2$
RewriteRule .* /deny.html [L]
RewriteCond %{REMOTE_ADDR} ^198\.51\.100\.2$
RewriteRule .* /deny.html [L]
「198.51.100.2」からのアクセスであれば「deny.html」にリダイレクトする指定です。
これで、よし!
……と思ったら、ダメでした。
Google Chromeさんに
このウェブページにはリダイレクト ループが含まれています
とか怒られてしまったのです。
あれ?無限ループしてる(--?
……してました。
「198.51.100.2」からの全アクセスを「deny.html」にリダイレクトしていますからね。
「deny.html」に対するアクセスも「deny.html」にリダイレクトされちゃうのです。
こりゃ、困ったね。
ということで、無限ループを回避することにしました。
やったのは単純に「deny.htmlへのアクセスはリダイレクトしない」条件を追加するだけです。
例えば、こんな感じφ(--)
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^198\.51\.100\.2$
RewriteCond %{REQUEST_URI} !(deny\.html)
RewriteRule .* /deny.html [L]
RewriteCond %{REMOTE_ADDR} ^198\.51\.100\.2$
RewriteCond %{REQUEST_URI} !(deny\.html)
RewriteRule .* /deny.html [L]
REQUEST_URIに「deny.html」が含まれていないときが対象だよ!と追加指定しています。
これで無事に、無限ループは回避されました。
まぁ、他にもやり方はいろいろあると思いますけどね。
お手軽な回避方法の一例として、書いてみました。
そんな感じ\(--)/