2009-08-12 12 views
0

.htaccessがどのようにリダイレクトするかを理解しようとしています。.htaccessリダイレクトはどのように機能しますか?

言ってやる例えば、私のユーザーはに移動:

www.website.com/users/bob

私は、そのユーザーをリダイレクトするにはどうすればよい:

WWW。 website.com/users.php?user=bob

+0

このような質問はserverfault.comに無限に流れています。これについてはどうでしょうか?例:http://stackoverflow.com/questions/1249368/mod-rewrite-beginner-questions – innaM

答えて

3

あなたの.htaccessはOK:次のようなものです:

# turn on the engine 
RewriteEngine On 

RewriteRule ^users/(.*)$ /users.php?user=$1 

# Pattern: 
#^ = start of URL (.htaccess doesn't get the leading "/") 
# users/ = your path 
# (.*) = capture any character, any number of times 
# $  = end of string 

# Result: 
# /users.php?user= = your path 
# $1    = the first group captured in the pattern 
+0

上記のRewriteBaseにも言及してください。 –

+0

今、$ 1 ...ここに2番目のルールを追加したいのですが、website.com/users/bobの代わりに、website.com/show/whateverになり、website.com/show.phpにリダイレクトされます?id =何でも。私はその行を単純にコピーし、詳細を変更し、最後に$ 2を置くことはできますか? – mrpatg

+0

$ 1を使用していますか?いいえ、関連ルールのグループです。たとえば、/ users/bob/bobbinson、/users/([^/]*)/(.*)$に一致すると$ 1はボブ、$ 2はボビンです – Greg

0

technical details of mod_rewriteを読むことをお勧めします。そこでは、内部処理についての良い洞察が得られます。あなたの具体的な例

は、適切なルールは次のようになります。今

RewriteRule ^users/([a-z]+)$ users.php?user=$1 

/users/bobを要求されたときに、mod_rewriteの意志:

  1. ストリップコンテキストごとのディレクトリ接頭辞(/場合.htaccessファイルがドキュメントルートにあります)
  2. 残りの部分をテストして、パターンと一致するものがになるまで繰り返します(users/bob)。
    • 任意の対応RewriteCondディレクティブがある場合、彼らは、あまりにも
  3. (対応するマッチで$n%nを交換しながら)新しいものと現在のURLを置き換えるテストされるだろうパターンが一致して条件が真であると評価された場合
  4. 置換されたURLが絶対URLパスでない場合(URLスキームから始まる)
関連する問題