2009-05-27 20 views
1

私のサイトには、予想通りの数のページがあります。例えば.htaccess書き換え質問

:?

のindex.php submit.php view.php ID =何とか

私はこれらの書き換え

のようなインデックス/ / ビュー/何とか

を提出したいです

これを行う最善の方法は何ですか?

答えて

1

.htaccessリライトを使用して処理する方法は、頭痛のビットを生成することができます。それは基本的な答えのようですが、あなたが正規表現を上回らない限り、あなたは失われるでしょう。

これにはいくつかの方法がありますが、私はidが関連付けられたindex.php、submit.php、およびview.phpしか持っていないと仮定しています。

 
RewriteEngine On 
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php?id=$2 
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php 

動作の仕方は次のとおりです。.htaccessに書き換えエンジンをオンにするように指示します。ステップ2、サイトに、それがどのように行われたかを示すパラメータを与えます。この場合のパラメータは次のようになります。urlの始めに、ドメイン名の後にindex、submit、またはviewをチェックします。それらが存在する場合、IDを探します。両方とも存在する場合は、値をPHPに/(index, submit, or view)?id=$idとして返します。

2番目のIDは実行可能でない場合です。

これは簡単な方法です。それを処理するより複雑な方法は、次のようになり...

 
RewriteEngine On 
RewriteRule ^([a-z]+)/?(\d+)?$ /$1.php?id=$2 

これはidが必要でさえあるならば、検出し、ファイル名としてそれを使用し、唯一の大文字と小文字の定期的なアルファベットの文字で書かれているものは何でもロードされます - それは無しでロードされます。

名前が間違っているか何かを返さない場合は、エラーを返すために、あなたの$_GET行にいくつかの安全対策を必ず含めてください。

あなたはそれを試して、コーヒーと何かアルコールのポットで正規表現を研究するべきです(私は正規表現が現代プログラマーのアルコール依存症の第1位だと信じていますが、私は間違っている可能性があります)あなたのシステムに快適にフィットするスキームが見つかるまで。

サイドノートとして、必要な数のRewriteRuleを持つことができますが、常に最初のものから処理されます。私はこれが常識のように思えるが、いつデバッグするのかを知ることは重要である。