我想知道是否有人可以帮助我。
目前,要在我的codeigniter应用中查看用户个人资料,网址如下:
http://www.website.com/profile/u/username
我想将此更改为
http://www.website.com/username
这是否可以使用路线?若有,有人可以给我一些建议怎么做?
此外,如果有人注册了与控制器名称相同的用户名,那么会发生什么?
干杯,
答案 0 :(得分:3)
1. Is this possible using routes?
是
2. If so could someone give me a bit of advice how to do it?
当然:$route['(:any)'] = "profile/u/$1";
更多信息:http://codeigniter.com/user_guide/general/routing.html
3. Also, if someone signs up a username that is the same as a controller name, what would happen then?
您不应该允许用户使用这样的用户名进行注册。 Facebook这样做! (www.facebook.com/groups/123457890 =“groups”不能用作用户名)
为了避免对控制器的访问被路由到配置文件访问,您应该将路由配置之前添加到上面提到的那个,如下所示:
$route['(admin|groups|signup)'] = "$1";
这里我们有一个正则表达式,易于理解。您只需要将控制器名称与竖线字符分开。
我希望这有帮助!
答案 1 :(得分:0)
此链接可以帮助您: http://ellislab.com/forums/viewthread/186025/
你可以按照它说的做。或
你必须使用apache重写模块并首先使用.htaccess
上的RewriteEngine
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
and delete index.php from applications/config/config.php
$ config ['index_page'] =“index.php”; 和路线
$route['^(?=[^\s]*?[0-9])(?=[^\s]*?[a-zA-Z])[a-zA-Z0-9]*$'] = "user/$1";`