書き換えルールは次のRewriteRule example actual-page.php [L]
ことを意味します。
現在の URL で正規表現を検索し、example
見つかった場合は URL を に置き換えますactual-page.php
。その後、書き換えプロセスを終了し、以降のルール (L フラグ) を無視します。
この正規表現は、文字列「example」が「example.png」だけでなく「another-example-from-a-different-url」を含む URL のどこかにある場合にトリガーされます。
そのため、正規表現でどこも検索しないようにし、URL 文字列全体、または少なくとも重要な部分に一致するように指定することをお勧めします。そのための構文文字は、「文字列の開始」を表す「^」と「文字列の終了」を表す「$」です。これにより、ルールが に変更されますRewriteRule ^example$ actual-page.php [L]
。
一方、URL には実際にはスラッシュが含まれており、これはもはや一致することが許可されていないため、これは機能しない可能性があります。次のように追加できますRewriteRule ^/example$ actual-page.php [L]
。クエリ文字列はこの一致では使用されないことに注意してください。RewriteRule では検出できませんが、その前に RewriteCond 句を使用する必要があります。
仮想 URL を既存の PHP スクリプトに書き換えるが、HTML ファイルや画像などの既存のリソースには触れない一般的な使用例は次のようになります。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule .* - [L]
RewriteRule .* php-script.php [L]
これには逆のロジックがあります。最初のルールが一致し、要求されたファイル名がファイル、ディレクトリ、またはシンボリック リンクのいずれかである場合、書き換えは行われません。これにより、実際のリソースが要求された場合に書き換えがキャンセルされます。それ以外の場合は、同じ URL が 2 番目の RewriteRule で試行され、php-script.php が実行され、要求された URL を分析してそれに基づいて動作できます。