1

登録やログインなどを処理するために Tank_auth を利用しています。私の CI は、ドメイン ルートのサブフォルダー (例: www.domain.com/account/) にあります。

例:

ログインコントローラーは認証/ログインなので、私のURLはwww.domain.com/account/auth/loginです

www.domain.com/account/auth/loginwww.domain.com/account/loginに変更したいので、routes.php 設定ファイルに次の行を追加しました。

$route['login'] = 'auth/login';

これで、 www.domain.com/account/auth/loginにアクセスすると、 www.domain.com/account/loginに移動することが予想され ます。www.domain.com/account/loginにアクセスすると、その URL にとどまり、ページが正しく読み込まれるはずです。

代わりに、www.domain.com/account/auth/loginにアクセスするとログインページが表示され、 www.domain.com/account/login にアクセスするとwww.domain.com/account/auth/loginにリダイレクトされます

この動作は、ドキュメントに記載されている内容や SO の他の動作とは反対のようです。$route変数のキーと値を交換しようとしましたが、上記の両方の URL で 404 が発生します。

誰かが私を正しい方向に向けることができますか? ここで何が間違っていますか?

ありがとう

[編集] - htaccessの内容

RewriteEngine on

# remove index.php from url
RewriteCond $1 !^(index\.php|img|js|css|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /account/index.php/$1 [L]

# redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
4

1 に答える 1

1

完全な答えではありませんが、CI と非常によく似たものに使用した回避策です。routes.phpファイルに追加すると、これで探していることができると思います。

$route['(login|logout|register|send_again|activate|forgot_password)'] = 'auth/$1';

Auth クラスのいくつかのメソッドを省略していますが、おわかりいただけたでしょうか。これにアプローチできるもっとエレガントな方法があると思いますが、基本的な考え方はそこにあります。

基本的に静的ページにマップされるルートがいくつかあるプロジェクトで、このアプローチを使用しました。「ページ」コントローラーを使用していましたが、URL は example.com/pages/about のようになりました。私はそれが気に入らなかったので、上記のルート スニペットを思いつきました。

より良い答えがあれば、私はそれを見たいです。私はこれが当時私を悩ませたことを覚えています...そしてそれをもう一度見ると、まだそうです:)

于 2012-09-23T06:37:29.867 に答える