2012-09-13 166 views
1

我正在使用Tank_auth来处理注册,登录等。我的CI位于我的域根的子文件夹中,例如, www.domain.com/account/Codeigniter路由不重定向

为例:

登录控制器是这样AUTH /登录所以我的网址为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我会保持在该网址上,并且页面应该正确加载。

相反,当我访问www.domain.com/account/auth/login我看到登录页面,当我访问www.domain.com/account/login我重定向到www.domain。 com/account/auth/login

此行为似乎与文档中描述的以及SO上的其他行为相反。我曾尝试交换$ route变量的密钥和值,但这只会导致上述两个url的404s。

任何人都可以指向正确的方向吗?我在这里做错了什么?

感谢

[编辑] - 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] 
+0

两件事:1.你可以发布你的.htaccess内容,可能与此有关。 2.次要,次要但可能值得尝试:在文档中,他们在等于之前使用单引号,在等于之后使用双引号。 – PaulSkinner

+0

@PaulSkinner感谢您的回复。我已经在上面添加了htaccess内容。我尝试了dbl引号,但这不起作用。 – Martin

+0

对不起,我很难过。看不出为什么这是行不通的。 – PaulSkinner

回答

1

不是一个完美的答案的内容,但我用与CI非常类似一种解决方法。我认为这会做你要找什么,如果你把它添加到您的routes.php文件:

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

我离开了从验证类的一些方法,但你的想法。有一种更加优雅的方式可以让我确信,但基本的想法就在那里。

我在一个项目中使用了这种方法,其中有几条基本上映射到静态页面的路线。正在使用“网页”控制器,但网址最终结局如下:example.com/pages/about。我不喜欢这样,所以我想出了上面的路线片段。

如果有更好的答案,我很乐意看到它。我当时记得这个困扰我......再看一遍它仍然如此:)