基本的に、私はサイトで作業を開始しようとしています.htaccessファイル(または他の場所)に追加できる何かが欲しいのですが、これは次の疑似コードのように機能します: )
if (visitors_ip <> 127.0.0.1)
redirectmatch ^(.*)$ http://www.example.com/under-construction.html
うまくいけば、それは理にかなっています...
基本的に、私はサイトで作業を開始しようとしています.htaccessファイル(または他の場所)に追加できる何かが欲しいのですが、これは次の疑似コードのように機能します: )
if (visitors_ip <> 127.0.0.1)
redirectmatch ^(.*)$ http://www.example.com/under-construction.html
うまくいけば、それは理にかなっています...
それは次のようになります:
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/mypage\.html$
RewriteRule .* http://www.anothersite.com/mypage.html [R=302,L]
Andrewが指摘するように、同じドメインにリダイレクトする場合、%{REQUEST_URI} 条件は無限ループを回避します。
REMOTE_HOST
多くの場合失敗します。を使用する必要がありますREMOTE_ADDR
。
Cf "と"の違いREMOTE_HOST
REMOTE_ADDR
これが私が最終的に使用したソリューションです。同じドメインにリダイレクトすることを選択した場合に無限ループが発生することを除いて、VonCと同様であることに注意してください。
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/coming-soon\.html$
RewriteRule .* http://www.andrewgjohnson.com/coming-soon.html [R=302,L]
また、302は一時的な移動であり、何もまたは301の代わりに使用する必要があることにも注意してください。
このアプローチには注意してください。
アクセスを制限するために IP ベースのアプローチを採用し、IP アドレスのリースを失うことでやけどを負いました。
もちろん、いつでも問題のボックスに ssh して .htaccess ファイルを再度変更することができますが、何が起こったのかを理解しようとしている間の 5 分間のパニックは、それが起こることを予期していなければ、まったく楽しいものではありません。
代わりに、(htpasswd ファイルと組み合わせて) .htaccess を使用して、開発サイトにアクセスするための資格情報を要求することをお勧めします。
その良い例がここにあります: http://aplawrence.com/foo-web/htaccess-authentication.html