2009-07-16 13 views
2

.htaccessを使用して次の情報を書きたいとしましょう。PHPとhtaccessリダイレクト:yoursite.com/user.php?username=xyzをyoursite.com/xyzに書き換えます。

書き換え/user.php?username=xyz~/xyzです。

私が使用します。

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1 

問題は、これが完了すると、どのように私は私の他のリンクにユーザー名をアクセスしないのですか?

ので/mike/details.php

ように、それはですので、私は、自動的にURLに追加されるユーザー名(「マイク」)の値を取得するにはどうすればよい:私は.htaccessファイルに変更するには何が必要でしょう /username/details.php?username=mike

この価値を得る?または、PHPスクリプトでURLを解析する必要がありますか?

おかげ

答えて

0

私は、クエリ文字列パラメータとしてユーザー名を渡すと、良い解決策ではないと思います。

ので、

(それは問題ではない、クッキーを通過またはGET)セッション(サーバ側)に格納するユーザデータを作成し、セッションメカニズムは、セッションIDを用いて、それを取得してみましょうあなたの書き換えルールは依然としてuser.phpにリダイレクトされ、usernameパラメータを設定しますが、user.phpはセッションにユーザ名とそのデータを保存します... every $ _SESSIONコンテナにアクセスする他のPHPスクリプト(session_start ())は、必要なすべてのユーザー関連データを簡単に検索できます。

私の2セント:

1

はこの試みる言うようにこれはanytext で始まると、サイト内の他のルールと重複します:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule ^(.*)$ user.php?username=$1 [L,QSA]