2009-08-22 13 views
6

PHPでURLルーティングを実装する方法。PHPでURLルーティングを実装する方法

+0

http:// stackoverflow。com/questions/1316021/how-to-use-url-routing-in-php – cherouvim

+0

可能な複製:http://stackoverflow.com/questions/125677/php-application-url-routing その質問を見てみてください。 – Macha

+0

事実、triplicate =) – Zed

答えて

16

Apacheを使用する場合は、mod_rewriteを介して、URLルーティングを行うことができます。たとえば。

小さな例:

http://yoursite.com/main.php?dir=dir1&path=path2 

より多くの例hereによって提供

http://yoursite.com/dir1/path1 

のような任意の要求を持っています

RewriteEngine On 
RewriteRule ^(dir1)/?(path2)? main.php?dir=$1&path=$2 

他の代替は、すべての要求は、単一のPHPファイル

RewriteEngine On 
RewriteRule (.*) main.php?request=$1 

にリダイレクトして、あなたには、いくつかのことで一致している正規表現のセットを持っていることによってsimilar approachを、使用することができますコードでそれをしなければなりませんコードを作成し、header()または内部でリダイレクトします。

10

まず、Apacheの(あなたのWebサーバーはApacheだと思います)mod_rewriteが有効になっている必要があります。


次に、すべてをindex.phpページにリダイレクトするRewriteRuleを作成する必要があります。このような
何かが行うことができます:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* index.php 

をそれはindex.phpに存在しないファイルへのすべてのリクエストをリダイレクトします。つまり、要求されたURLがwww.example.com/blahの場合、実際に呼び出されるのはindex.phpです。それについて

は、ここに助けることができるリンクのカップル:


そこで、このページではに応じて、表示する必要があるかを決定する必要がありますどの初期URLが呼び出されたか、またはどのパラメータが受信されたかを示します。

これは、たとえば、Design Pattern Front Controllerを使用して行うことができます。たとえば、ほとんどの現代のPHPフレームワークで実装されています。


この件に関する多くの質問がありました。それらのいくつか(およびそれらの回答)がおそらくあなたを助けるかもしれません。

+0

これは、この質問の標準的な答えになるはずです。これはApache上で実行されているサーバー側の言語で動作しますが、とにかく書き換え規則の束は特に持続可能ではありません。 – WCWedin