ユーザーがユーザー名 mysite.com/username を登録するときに、この種の URL を作成したいと思います。
このサイトで多くの投稿を検索したところ、mysite.com/user/username のようにやっている人がいます。
ユーザーを削除して、直接 mysite.com/username に移動させたい
これには何が最善の方法でしょうか?
ユーザーがユーザー名 mysite.com/username を登録するときに、この種の URL を作成したいと思います。
このサイトで多くの投稿を検索したところ、mysite.com/user/username のようにやっている人がいます。
ユーザーを削除して、直接 mysite.com/username に移動させたい
これには何が最善の方法でしょうか?
ルートを調べることができます:
http://codeigniter.com/user_guide/general/routing.html
config/routes.php にルートを入力します
例として:
$route['([a-zA-Z]+)'] = "main_controller/user_function/$1";
ただし、@Nylon Smile が上で述べたように、ログアウトを使用しようとすると、ログアウトのユーザー ページにアクセスしようとします。
これを行うには、'config/routes.php' の $route 配列に項目を追加します。
$route['([a-zA-Z0-9_-]+)'] = "user/index/$1";
これにより、example.com/whatever が「user」コントローラーの「index」関数にマップされます。
はい、「ログアウト」コントローラーと「ログアウト」という名前のユーザーがある場合、衝突が発生します。上記の項目の前に$route 配列に次の項目を追加することで、これを解決できます。
$route['logout'] = "logout";
また、コントローラーを含むユーザー名のブラックリストを保持します。これには多少の維持費がかかるため、ここにリストされている他のソリューションを使用して、URL のユーザー名の前に「user/」などのプレフィックスを付け、それをすべて回避することをお勧めします。
私は CodeIgniter に詳しくありませんが、人々が mysite.com/username を使用しない理由についての一般的な回答は次のとおりです。
mysite.com/user/username は、通常、URL ディスパッチャーがユーザー名をユーザーのページを処理する関数/モジュールに渡すため、適切なソリューションです。
mysite.com/username は、ディスパッチャーが他のすべてのルールの後に貪欲なルールを設定して、以前のルール以外のすべてをユーザーのページを処理するモジュール/関数に渡す必要があるため、悪い解決策です。
ここで、mysite.com/username を使用し、ユーザーをログアウト ページに誘導する mysite.com/logout があるとします。ユーザーが来て、ユーザー名として「ログアウト」で自分自身を登録します。では、mysite.com/logout にアクセスして、logout さんがログアウトしたい、または自分のページを見たいと、どのように言うのでしょうか?