【问题标题】:How to create Facebook type url in codeigniter using routing如何使用路由在 codeigniter 中创建 Facebook 类型的 url
【发布时间】:2014-04-19 05:41:54
【问题描述】:

我的网址是这样的

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

我想像脸书一样:

mydomain.com/rbkdon3

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

为了达到我的要求,我需要在 routes.php 文件中做什么。

【问题讨论】:

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


【解决方案1】:

你必须使用 apache rewrite 模块并首先使用 .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]

并从applications/config/config.php 中删除index.php

$config['index_page'] = "index.php";

并使用

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

正则表达式已更新

【讨论】:

  • 感谢您的回答,此代码是否对我在项目中的其他控制器有影响..????? b'coz of $route['(:any)'] = "user/$1";
  • 用正则表达式编辑,当包含数字和字符串的值使用 user/$1
【解决方案2】:

这样你就可以实现了。

$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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-07
    • 2017-12-12
    • 2020-12-30
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2023-03-03
    相关资源
    最近更新 更多