モジュール構造

リライト設定ガイド

URL リライトは、 HTTP サーバの共通機能です。 しかしながら、ルールと構成は、それらの間ではなはだしく異なります。 下記は、書いた時点で利用できる、ポピュラーな様々なウェブサーバを通じた 多少の共通するアプローチです。

Apache HTTPサーバ

移行の例では全て、 mod_rewrite ( Apache にバンドルされた公式モジュール) を使います。 それを使うために、 mod_rewrite はコンパイル時に含まれるか、 動的共用オブジェクト (DSO) として許可されなければなりません。 詳しくは、あなたのバージョンの » Apache ドキュメントを参照してください。

バーチャルホスト内でのリライト

これは非常に基本的なバーチャルホスト定義です。 これらのルールは、一致するファイルが document_root 配下で見つかった時を除き、 リクエスト全てを index.php に導きます。

  1. <VirtualHost my.domain.com:80>
  2.     ServerName   my.domain.com
  3.     DocumentRoot /path/to/server/root/my.domain.com/public
  4.  
  5.     RewriteEngine off
  6.  
  7.     <Location />
  8.         RewriteEngine On
  9.         RewriteCond %{REQUEST_FILENAME} -s [OR]
  10.         RewriteCond %{REQUEST_FILENAME} -l [OR]
  11.         RewriteCond %{REQUEST_FILENAME} -d
  12.         RewriteRule ^.*$ - [NC,L]
  13.         RewriteRule ^.*$ /index.php [NC,L]
  14.     </Location>
  15. </VirtualHost>

index.php の前におかれたスラッシュ ("/") に注意してください。 .htaccess でのルールはこの点に関しては異なります。

.htaccessファイル内でのリライト

下記はmod_rewriteを利用する .htaccessファイルの例です。 これは、リライト・ルールだけを定義し、 index.php から先行するスラッシュが省略されたことを除けば、 バーチャルホストの設定に似ています。

  1. RewriteEngine On
  2. RewriteCond %{REQUEST_FILENAME} -s [OR]
  3. RewriteCond %{REQUEST_FILENAME} -l [OR]
  4. RewriteCond %{REQUEST_FILENAME} -d
  5. RewriteRule ^.*$ - [NC,L]
  6. RewriteRule ^.*$ index.php [NC,L]

mod_rewriteを設定する方法はたくさんあります。 もし、詳細をお好みでしたら、Jayson Minard の» Blueprint for PHP Applications: Bootstrappingをご覧下さい。

Microsoft Internet Information サーバ

バージョン 7.0 現在、 IIS には現在標準的なリライト・エンジンが含まれます。 適切なリライトルールを作成するために、以下の構成を使うかもしれません。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3.     <system.webServer>
  4.         <rewrite>
  5.             <rules>
  6.                 <rule name="Imported Rule 1" stopProcessing="true">
  7.                     <match url="^.*$" />
  8.                     <conditions logicalGrouping="MatchAny">
  9.                         <add input="{REQUEST_FILENAME}"
  10.                              matchType="IsFile" pattern=""
  11.                              ignoreCase="false" />
  12.                         <add input="{REQUEST_FILENAME}"
  13.                              matchType="IsDirectory"
  14.                              pattern=""
  15.                              ignoreCase="false" />
  16.                     </conditions>
  17.                     <action type="None" />
  18.                 </rule>
  19.                 <rule name="Imported Rule 2" stopProcessing="true">
  20.                     <match url="^.*$" />
  21.                     <action type="Rewrite" url="index.php" />
  22.                 </rule>
  23.             </rules>
  24.         </rewrite>
  25.     </system.webServer>
  26. </configuration>

モジュール構造