如何使用路由在codeigniter中创建Facebook类型URL

时间:2014-03-14 04:52:27

标签: php codeigniter url-rewriting codeigniter-2 codeigniter-routing

我的网址是这样的

"mydomain.com/index.php/user/rbkdon3"

我想像facebook一样制作:

mydomain.com/rbkdon3

注意:用户名是字母+数字的组合。

我应该在routes.php文件中做些什么才能达到我的要求。

2 个答案:

答案 0 :(得分:0)

你必须使用apache重写模块并首先使用.htaccess

RewriteEngine on

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]

并从index.php

中删除applications/config/config.php
$config['index_page'] = "index.php";

和路线

$route['(^(?=[^\s]*?[0-9])(?=[^\s]*?[a-zA-Z])[a-zA-Z0-9]*$)'] = "user/$1";`

正则表达式已更新

答案 1 :(得分:0)

通过这种方式,你可以实现它。

$route['(:any)'] = 'user/'.$username;

动态创建此路线有点复杂

我们必须仅在用户退出数据库时才创建此路由,因此不会影响其他控制器。在routes.php中写下以下代码

$username = explode('/', $_SERVER['REQUEST_URI']);
require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->where('username', $username[1] ); //check user name 
$query = $db->get( 'tbl_users' ); //table name in which user exits
if($query->num_rows > 0){ //if exits the create routing
    $route['(:any)'] = 'user/'.$username[1]; // here you can define any controller and function name as required for the demo I have given this "'user/'.$username[1]"
}

注意:使用.htaccess文件从url中删除index.php。