• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to create our profile url


I followed your instruction to create a hook.

but now i used local host server..
my folder name : projects
my codeigniter folder name : example

In my database table - user - have username & user_urlname fields.
for ex: username : jasmine, user_urlname: flower (created by user)

so i need url like this -> localhost/projects/example/flower

In my htaccess file having :

RewriteEngine on

RewriteBase /projects/example/

RewriteRule ^admin/$ index.php/admin/login/
RewriteRule ^admin$ index.php/admin/login/

RewriteCond $1 !^(index\.php|application/images|application/scripts|application/css|application/content|application/settings|favicon.ico)
RewriteRule ^(.*)$ index.php/$1

In my hooks,
$this->uri =substr($_SERVER['REQUSET_URI'],1);
In $this->uri gives the result = /projects/example/flower. but my database field user_urlname having data - flower.
how can i check by using query ?

suppose i change second parameter for the above code like this
$this->uri =substr($_SERVER['REQUSET_URI'],18);
. It gives the result =flower.

now the if condition is true but 404 error raising.
I don't know what mistake i made in that code, pls tell me to correct that error

Above class expected the first segment uri (after trailing slash) as user_url, and then if the condition match, it will told CI to re-route the requested uri to the '/user/index/id', which cause 404 error in your localhost environment!

I think, its best practice to set your development environment, as close as possible with 'live' environment. It will avoid errors like you stated above. I mean, first, you must have accesible url like 'local.yoursite.com' in your local computer.

If you don't know how to do that, here the quick way.

1. If you're using windows, first you must add your host name in 'C:\WINDOWS\system32\drivers\etc\hosts'. Open 'hosts' file, then add 1 line
# Copyright (c) 1993-2009 Microsoft Corp.
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
# For example:
#     rhino.acme.com          # source server
#     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.       localhost
# add your new host name       local.jasmine.com
2. Suppose you have XAMPP installed on 'C:\xampp'. Open 'C:\xampp\apache\conf\extra', find file called 'httpd-vhosts.conf', and add this code after the very end line..
<VirtualHost *:80>
ServerAdmin jasmine@local.jasmine.com
DocumentRoot "C:\xampp\htdocs\projects\example\flower"
ServerName local.jasmine.com
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    <Directory "C:\xampp\htdocs\projects\example\flower">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all


    <IfModule dir_module>
        DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
                       default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
                       home.php home.pl home.cgi home.asp home.shtml home.html home.htm

    <FilesMatch "^\.ht">
        Order allow,deny
        Deny from all
        Satisfy All
3. Restart your apache, through XAMPP control panel, and try to access 'http://local.jasmine.com', it should pointing you to your codeigniter apps (if didn't, then there is an misconfiguration!).
4. Change your htaccess to
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?/$1
and i see you try to redirect some uri to admin page, do that by set a route
$route['admin/(:any)'] = "admin/login";

hi toopay,

Thank u so much. its working...

suppose if i change my domain name , i must change the system files..s correct

once again thank u


I found another way without changing system config & server config files.

In my hooks file userlookup.php as below

if (!defined('BASEPATH')) exit('No direct script access allowed');

class Userlookup
    protected $uri;
    protected $hostname;
    protected $username;
    protected $password;
    protected $database;

    public function __construct()
        // Configure database connection
        $this->hostname = 'localhost';
        $this->username = 'username';
        $this->password = 'password';
        $this->database = 'dbname';
    public function check_uri()
         $username  = substr($_SERVER['PATH_INFO'],1);            
         $url = explode("/",$username);
         // Connect to database, and check the user table
         mysql_connect($this->hostname, $this->username, $this->password) AND mysql_select_db($this->database);
         $res = mysql_query("SELECT url_name FROM users WHERE url_name='".$url[0]."'");
         if(mysql_num_rows($res) > 0)
         if ($row = mysql_fetch_object($res))
            $_SERVER['PATH_INFO'] = '/controller name/method name/'.$_SERVER['PATH_INFO'];


I try your solution and it work well in sub domain, but why it raise 404 error on main domain?

For example i have http://test.com and http://shop.test.com

i want if people access http://test.com/myprofile it will redirect to http://shop.test.com/myprofile


http://shop.test.com/myprofile will redirect it to their user profile.

hooks in http://shop.test.com/myprofile works like a charm, but hooks http://test.com/myprofile raise 404

errors. T_T

$_SERVER['argv'][0] = $_SERVER['REQUEST_URI'];

i try to change all that server variable,but nothing to change,please help..

I solve the problems by myself, but get strange solution.. I change $config['uri_protocol']
on http://test.com to QUERY_STRING and it work perfectly.
That make me confuse,because on http://shop.test.com i set $config['uri_protocol'] to AUTO,
and no problems at all.:-S

NOTE: http://test.com and http://shop.test.com each have their own CI.

[eluser]Amitabh Roy[/eluser]
It would be great to know if anybody have taken this a step forward and have implemented the following





etc , which should pull up the data for the relevant function(feedback,contact,products) for the given user(username)

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  

Users browsing this thread:
1 Guest(s)

  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2019 MyBB Group.