0

ユーザーがユーザー名 mysite.com/username を登録するときに、この種の URL を作成したいと思います。

このサイトで多くの投稿を検索したところ、mysite.com/user/username のようにやっている人がいます。

ユーザーを削除して、直接 mysite.com/username に移動させたい

これには何が最善の方法でしょうか?

4

3 に答える 3

5

ルートを調べることができます:

http://codeigniter.com/user_guide/general/routing.html

config/routes.php にルートを入力します

例として:

$route['([a-zA-Z]+)'] = "main_controller/user_function/$1";

ただし、@Nylon Smile が上で述べたように、ログアウトを使用しようとすると、ログアウトのユーザー ページにアクセスしようとします。

于 2011-01-08T08:00:26.340 に答える
2

これを行うには、'config/routes.php' の $route 配列に項目を追加します。

$route['([a-zA-Z0-9_-]+)'] = "user/index/$1";

これにより、example.com/whatever が「user」コントローラーの「index」関数にマップされます。

はい、「ログアウト」コントローラーと「ログアウト」という名前のユーザーがある場合、衝突が発生します。上記の項目の前に$route 配列に次の項目を追加することで、これを解決できます。

$route['logout'] = "logout";

また、コントローラーを含むユーザー名のブラックリストを保持します。これには多少の維持費がかかるため、ここにリストされている他のソリューションを使用して、URL のユーザー名の前に「user/」などのプレフィックスを付け、それをすべて回避することをお勧めします。

于 2011-01-09T03:19:32.373 に答える
2

私は CodeIgniter に詳しくありませんが、人々が mysite.com/username を使用しない理由についての一般的な回答は次のとおりです。

mysite.com/user/username は、通常、URL ディスパッチャーがユーザー名をユーザーのページを処理する関数/モジュールに渡すため、適切なソリューションです。

mysite.com/username は、ディスパッチャーが他のすべてのルールの後に貪欲なルールを設定して、以前のルール以外のすべてをユーザーのページを処理するモジュール/関数に渡す必要があるため、悪い解決策です。

ここで、mysite.com/username を使用し、ユーザーをログアウト ページに誘導する mysite.com/logout があるとします。ユーザーが来て、ユーザー名として「ログアウト」で自分自身を登録します。では、mysite.com/logout にアクセスして、logout さんがログアウトしたい、または自分のページを見たいと、どのように言うのでしょうか?

于 2011-01-08T07:58:30.730 に答える