2012-03-29 10 views
0

以下のURL書き換えルールの意味を理解するために少し助けが必要です。私は最初の3つのラインを強調することができますが、私はindex.php/$1の部分で立ち往生しました。このルールでは、/の意味はどういう意味ですか?私が常にファイル名の後に見ると思う唯一のものは、クエリ文字列セパレータ(?)です。区切り文字として/が表示されているのは今回が初めてです。それはどういう意味ですか?PHPとURLリライティング

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteRule ^(.*)$ index.php/$1 [PT,L]  
</IfModule> 

答えて

6

:として

http://www.example.com/something/else 

は同じになりますモジュールがロードされます。それ以外の場合は、サーバーエラーに直面するか、URL書き換え要求がすべて無視されます。

次の2行は、それに続く行のための条件です。つまり、RewriteRuleは、この2つの書き換え条件が満たされた場合にのみ授与されることを意味します。

条件では、要求されたURIが「既存のファイル」またはフォルダの種類でない場合にのみ、書き換えが実行されることを示しています。言い換えれば、要求されたファイル/フォルダが実際に要求されたサーバパス上に存在する場合、それは提供され、そうでなければ再書き込みが実行される。

最後の行が実際の書き換えを行います。ウェブサイトのドメイン名に従っているものはすべて取っておき、書き換えられたリクエストに追加します。これはindex.php/で始まります。

ここに例を示します。

あなたは次のURL-example.com/example-page.htmlをリクエストするとします。

という名前の仮想ホストルートフォルダに既存のファイルまたはフォルダがない場合、最後の書き換えルールは実際には次のURIをexample.com/index.php/example-page.htmlに要求します。

このようなものを行うための一般的な理由は、リクエストを受けたWebアプリケーションは、単一の中央ブートストラップファイル(ここではそのindex.php

EDITをすべての要求を処理する責任があるように設計されていることです:ここで私の意見では、mod_rewriteの非常に良い初心者フレンドリーチュートリアルです。

http://net.tutsplus.com/tutorials/other/a-deeper-look-at-mod_rewrite-for-apache/

2

URLの名前を書き換えているだけです。例えば

、このURL:<IfModule mod_rewrite.c>...</IfModule>ブロックがブロックwithing含まれているすべてのもののみmod_rewrite場合に考慮されることを保証

http://www.example.com/index.php/something/else 
+0

「index.php/something/else」の意味はどうですか? – DotNetStudent

+3

Apacheはindex.phpを呼び出しますが、そのスクリプトは$ _SERVER [] superglobalから何かを抽出するための少しの作業を行います –