1

我正在使用 Tank_auth 来处理注册、登录等。我的 CI 位于我的域根目录的子文件夹中,例如 www.domain.com/account/

一个例子:

登录控制器就是这样auth/login所以我的网址是www.domain.com/account/auth/login

我想将www.domain.com/account/auth/login更改为www.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 回答