1ページから続く

書き換え条件

前のページの3つの例は、URLを書き直して、サイトへのアクセスと記憶を容易にする方法を示しています。

書き換えルールには、特定の状況でのみ書き換えが行われるようにするための条件を設定することもできます。

例1:ホットリンクを防ぐ方法

ホットリンクは、あるサーバーの画像またはオブジェクトを別のサーバーで使用するプロセスです。 このアクションにより、被害者のサーバーから帯域幅が消費され、オブジェクトの作成者は、他の方法で獲得した可能性のあるサイトへの追加の訪問者を拒否します。

サイト上のオブジェクトへのすべてのリンクを他の不快な画像にリダイレクトするか、操作を完全に禁止することで、ホットリンクを防ぐことができます。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule .*\.(gif|jpeg|png)$ http://www.example.com/unpleasantness.jpg [R,NC,L]

今説明のために:

  • %{HTTP_REFERER}:これはトラフィックがどこから来ているかを示します。 パーセント記号は、それがapache変数であることを示します。
  • !:感嘆符はそれに続くパターンを否定します。 事実上、これは、それに続くものがではなく、書き換えルールの影響を受けるために必要な条件に該当することを示しています。
  • ^ $:前述のように、カレットは文字列の先頭を表し、ドル記号は文字列の末尾を表します。 この場合、それらの間に何もないため、リファラーは存在しません。 つまり、この行は、直接リンクが書き換えルールの影響を受けないことを示しています。
  • 2番目の条件は、リファラーをもう一度参照します。
  • !^ http://(www \。)?example \ .com /。*$:感嘆符は、リファラーが私たち自身のサイトであってはならないと述べています
  • 最後に、拡張子gif、jpeg、またはpngで終わるファイルへのリンクは、ホットリンカーにレッスンを教えるために不快な画像に再ルーティングされることを示す書き換えルール自体に到達します。 単に画像へのアクセスを禁止したいだけの場合は、最後の行のRewriteRuleに小さな編集を加えることができます。 この行のように代替の宛先を提供する代わりに、代わりに禁止されたページに書き換えを送信することができます:
    RewriteRule .*\.(gif|jpeg|png)$ - [F]

例2:URLにwwwを追加する方法

mod_rewriteが実行できるもう1つの便利なトリックは、ドメインにwwwを追加することです。 example.comとwww.example.comが同じサイトであることは簡単にわかりますが、検索エンジンはそれらを重複として登録し、ランキングを傷つけます。

この問題を解決するには、wwwを一貫して削除するか、常にURLに追加するかを選択できます。 この例は、wwwが常に接続されていることを確認する方法を示しています。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]

今説明のために:

  • %{HTTP_HOST}:これは要求されたURLのWebサイトを参照します
  • ^ example.com $:リクエストされたページはexample.comである必要があることを説明しています
  • ^(。*)$:書き換えルールでは、後のテキストはドメインに続くことができます。
  • [R = 301]:フラグは、URLがリダイレクトされていることを示し、301はこれが永続的なリダイレクトであることを示しています。 一時的なものは番号302で指定されます。

その後、すべてがexample.comからwww.example.comに変換されます

例3:特定のIPアドレスをブロックする

これは、たとえば、特定のIPアドレスの悪意のある当事者がサイトにアクセスするのを防ぐための便利なツールです。

RewriteCond %{REMOTE_ADDR} ^(12\.34\.56\.789)$
RewriteRule (.*) - [F,L]

今説明のために:

  • %{REMOTE_ADDR}:これは、サイトへのアクセス元であり、ブロックするIPアドレスを表します。
  • ^(12 \ .34 \ .56 \ .789)$:このセクションを使用して、悪意のあるIPアドレスを入力できます。 バックスラッシュは非常に重要であることに注意してください。 標準の正規表現をワイルドカードとして使用するのではなく、ピリオドを句読点として指定します。
  • (。*):これは、ブロックされたIPからのテキストによって、書き換えルールが完了することを意味します。
  • [F、L]:フラグはルールを終了します。 [F]はアクセスを禁止し、[L]は他のルールの適用を停止して、最後のルールにします。

資力

前のセクションは、Mod_Rewriteの機能の基本的な概要です。

トピックは非常に広範であり、非常に便利で柔軟なツールにすることができる多くのニュアンスがあります。

Mod_Rewriteの詳細については、次のリンクを参照してください。

EtelSverdlov著