特定のIPを送信しようとしています。つまり、自分のサイトの1ページを別のページに移動し、.htaccessファイルを使用して送信しようとしています。私はそれを行う方法の多くの一般的な説明を見ました(多くの構文的に異なる方法で)が、率直に言ってそれらのどれも動作しません。私はこれらのコマンドを並べます
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^99\.888\.777\.66$
RewriteRule ^/askedforpage\.html /redirecttopage.html [R,NE,NC]
私の。htaccessファイルで...しかし、これらのコマンドは私のサイトを機能しないままにします。 OS 10.6.8を搭載したMacでApache 2.2を使用しています。
どうすればいいですか?
これは、悪意のあるIPに対する「拒否」コマンドのない.htaccessファイルです。
Header set Accept-Ranges none
order allow,deny
allow from all
Redirect permanent xyz.html http://xxyyzz.com/header.htm
あなたが投稿したコードには、それほど大きな間違いはありません。間違いなく、あなたのコードがあなたのサイトを機能しないままにするようなエラーはありません。現状では構文的に有効です。ただし、行末をチェックして、偽の文字がないことを確認してください-これにより問題が発生する可能性があります。
以下を試してください:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^99\.888\.777\.66$
RewriteRule ^askedforpage\.html /redirecttopage.html [R,NC,L]
RewriteRule
パターンの/
(スラッシュ)プレフィックスを削除しました。ディレクトリプレフィックスは、パターンが一致する前にディレクトリごとの.htaccessファイルから削除されます(したがって、URLパターンがスラッシュで始まることはありません)。 NE
フラグも削除しました-これは、投稿したコードでは不要です(エラーではありません)。
編集:L
(LAST)フラグを追加しましたが、正直なところ、この場合、競合するルールがない限り、違いはあまりありません(または別の).htaccessファイル-あなたの質問からのものではないようです。
一般に、リダイレクトを確立した後に書き換えエンジンでルールを再処理することは望ましくないため、L
外部リダイレクトでRewriteRule
フラグを指定する方が確かに一般的です。
これは、w3dのアドバイスが正しかったことを報告するためのものです。これを行う方法は
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^99\.888\.777\.66$
RewriteRule ^askedforpage\.html /redirecttopage.html [R,NC,L]
(既にFollowSymLinksをオンにして、mod_rewrite
を有効にしました。) "L"(LAST)フラグは重要です!
これらの。htaccessコマンドは、ページ "99.888.777.66
"に対するIP askedforpage.html
(およびそのIPのみ)によるリクエストを探し、ページ "redirecttopage.html
"を返します。代わりに。特に断らない限り、そのIPは他のものを取得できます。
Tip 'o w3dにボウラー。