mod-rewrite
基本的な内部書き換え
サーチ…
PHPのスクリプトにファンタジーURL
この例では、 http://example.com/topic/id-seoname
という形式のURLを、入力としてIDをとるPHPスクリプトに書き換えます。この例では、ルールが「ディレクトリごと」のコンテキストになることが必要です。
RewriteEngine on
RewriteRule ^topic/([0-9]+)-[^/]*/?$ /topics.php?id=$1 [L]
この例では、 topic/
はすべてのトピックの共通接頭辞です。それには、スクリプトによって使用される番号が続きます。最後に、SEO名が表示されます。このseoの名前はmod_rewriteによって無視されます。なぜなら、seoの理由からです。 RewriteRule
の第2引数には、書き換え先のURLが含まれています。プレースホルダ$1
は、その前の正規表現内の最初の取得グループの内容に置き換えられます。この場合、 ([0-9]+)
と一致するものに置き換えられます。
phpスクリプトへのクエリ文字列を含むURL
クエリ文字列を照合するには、条件をRewriteRule
追加する必要があります。これは、 RewriteCond
ディレクティブを対応するルールの前に置くことによって行われます。次の例では、古いURLを新しいURLに動的に内部的に書き換えます。
RewriteCond %{QUERY_STRING} ^name=([^&]*)$
RewriteRule ^oldscript\.php$ newscript.php?username=%1 [L]
リテラルドットと一致するには、スラッシュでエスケープする必要があることに注意してください。 %1
は前の条件の最初の取得グループに置き換えられます。この場合、 ([^&]*)
マッチしたものに置き換えられます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow