2009-03-21 4 views
2

私はLAMPフレームワークでURL書き換えを行う方法を研究しています。私はワードプレスのコードを勉強して研究を始めました。私はワードプレスの.htaccessを見て、これを見た:.htaccessまたはPHPコードでのURL書き込みを管理しますか?

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

私は驚いて嬉しかった!私はこれらの規則的な表現のような規則を見なかったので驚いた。 .htaccessファイルの動作(期限切れになる)の学習を遅らせることができ、上記のスクリプトを使用して、PHPの$ _SERVER変数をURLデータとして解析することができて嬉しかったです。

私の質問は、.htaccessファイルのURL書き換えを管理するメリットとデメリットは何ですか?そして、PHPコードのURL書き換えを管理するメリットとデメリットは何ですか?

答えて

3

PHPでこれを行うと、より多くのPHPスクリプト/コードの読み込み、解析、実行につながります。このようにすれば、外部のリダイレクトで正しいページにアクセスしないでください。 PHPスクリプトは、ヒットするたびにコンパイルされることに注意してください(opcodeキャッシングにもかかわらず)。

mod_rewriteはこれを行う方がずっと効率的です。また、mod_rewriteは正規表現(および他のいくつかのもの)しか使用できないため、このようなルールをかなり単純に保つ必要があります。PHPでは、データベースの検索などを行い、正しいページを見つけるなどです。良くない。

正規表現は難しくありません。通常はそれだけです。

RewriteRule ^account/orders/(\w+)$ /account/orders.php?type=$1 [L] 

私の書き換えルールの90%以上は次のようなものです。かなり基本的なもの。

+0

ありがとうcletus。私はあなたのURLを書き換えルールを試して、それは私に珍しい結果を与えている。 http://stackoverflow.com/questions/669161/whats-wrong-with-my-rewriterule – John

4

ModRewrite:バリエーションがほとんどない場合に使用します。正規表現がたくさんある場合、サーバは負荷を感じます(私の経験は30の複雑な正規表現であった)。また、Apache(またはこれをサポートする別のベンダー)にロックされます。利点:実装が非常に簡単です。短所:ベンダーのロックが入り、柔軟性が低下します。

PHP:ベンダーを切り替える可能性があるときに使用します(Apacheで開発が実行され、ライブシステムでlighttpdが実行されていた場合があります)。カスタムのURL書き換えを提供する場合にも使用します(顧客が独自のURL書き換えルールを定義できるようにするための管理者設定画面でこれを使用しました)。利点:高い柔軟性とプラットフォームの独立性。短所:潜在的に、より多くのシステムリソースを使用できます。

+0

なぜ開発と運用の間に異なるアプリケーションスタックを使用していますか?それはトラブルを求めています。 –

関連する問題