Foros del Web » Programando para Internet » PHP » CodeIgniter »

codeigniter htaccess URL amigables,

Estas en el tema de codeigniter htaccess URL amigables, en el foro de CodeIgniter en Foros del Web. hola, estoy leyendo un tutorial de codeigniter, tal vez lo conozcan, hay pocos videotutoriales en español.... en el momento que tengo que hacer una prueba, ...
  #1 (permalink)  
Antiguo 09/11/2012, 21:59
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
codeigniter htaccess URL amigables,

hola, estoy leyendo un tutorial de codeigniter, tal vez lo conozcan, hay pocos videotutoriales en español....
en el momento que tengo que hacer una prueba, voy a la pagina y se "llama" al controlador que esta prederteminado en routes, sucede que la clase, del controlador, tiene un metodo y en teoria tendria que acceder a ese metodo, escribir en la URL "/metodo" tambien luego se puede escribir "/parametros"

cuando escribo esto (hasta aca todo bien....)

http://localhost/InicioCI/

pero cuando quiero llamar al metodo que contiene esa clase....asi...

http://localhost/InicioCI/hola_mundo/hola_mundos

tira error mire todas las configuraciones.. etc, tengo activado el htaccess...

lo que si de esta manera puedo acceder...

http://localhost/InicioCI/index.php/...do/hola_mundos

-----------

aca estas los codigos.....

ROUTES.PHP
Código PHP:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');


$route['default_controller'] = 'hola_mundo';
$route['404_override'] = '';


HOLA_MUNDO.PHP

Código PHP:
 <?php
class Hola_mundo extends CI_Controller {

       function 
__construct(){
      
parent::__construct();
   }

    function 
hola_mundos()    {
        echo 
'Hola mundos metodo';
    }
    public function 
index()    {
        echo 
'Hola mundo index';
    }
}
?>

.HTACCESS

Código PHP:
    <IfModule mod_rewrite.c>

        
RewriteEngine On
        RewriteBase 
/InicioCI/

        
RewriteCond %{REQUEST_URI} ^system.*
        
RewriteRule ^(.*)$ /InicioCI/index.php?/$[L]

        
RewriteCond %{REQUEST_URI} ^application.*
        
RewriteRule ^(.*)$ /InicioCI/index.php?/$[L]

        
RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond 
%{REQUEST_FILENAME} !-d
        RewriteRule 
^(.*)$ /InicioCI/index.php?/$[L]

    
##### rewrite exceptions
        
RewriteCond $!^(index.php|css|js|img|robots.txt)
        
RewriteRule ^(.*)$ /InicioCI/index.php/$[L]

    </
IfModule>

    <
IfModule !mod_rewrite.c>
        
ErrorDocument 404 /InicioCI/index.php
    
</IfModule

CONFIG.PHP

Código PHP:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');


$config['base_url']= 'http://localhost/InicioCI/';


$config['index_page'] = '';


$config['uri_protocol']    = 'AUTO';



$config['url_suffix'] = '.html';


$config['language']    = 'english';


$config['charset'] = 'UTF-8';


$config['enable_hooks'] = FALSE;



$config['subclass_prefix'] = 'MY_';



$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';


$config['allow_get_array']        = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger']    = 'c';
$config['function_trigger']        = 'm';
$config['directory_trigger']    = 'd'// experimental not currently in use


$config['log_threshold'] = 0;


$config['log_path'] = '';


$config['log_date_format'] = 'Y-m-d H:i:s';


$config['cache_path'] = '';


$config['encryption_key'] = '';


$config['sess_cookie_name']        = 'ci_session';
$config['sess_expiration']        = 7200;
$config['sess_expire_on_close']    = FALSE;
$config['sess_encrypt_cookie']    = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']        = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent']    = TRUE;
$config['sess_time_to_update']    = 300;


$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']        = "/";
$config['cookie_secure']    = FALSE;


$config['global_xss_filtering'] = TRUE;


$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;


$config['compress_output'] = FALSE;


$config['time_reference'] = 'local';



$config['rewrite_short_tags'] = FALSE;



$config['proxy_ips'] = '';


no entiendo por que el " RewriteRule ^(.*)$ /InicioCI/index.php/$1 [L] "


no me elimina el INDEX.PHP...


gracias
  #2 (permalink)  
Antiguo 09/11/2012, 23:16
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: codeigniter htaccess URL amigables,

mejor sigo leyendo el tutorial, hay un codeigniter donde la clase padre del controlador es controller y otra es CI_controller
  #3 (permalink)  
Antiguo 10/11/2012, 12:49
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: codeigniter htaccess URL amigables,

eso es por la version, en versiones anteriores si era Controller la clase, ahora tus controladores deben extender de CI_Controller o alguna libreria tuya
  #4 (permalink)  
Antiguo 14/11/2012, 20:37
 
Fecha de Ingreso: julio-2011
Ubicación: Mexico
Mensajes: 36
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: codeigniter htaccess URL amigables,

Hola decidi preguntar en este hilo para tratar de no habrir otro.

Yo tengo un lio con las url, estoy haciendo una red social (vaya novedad no?) el caso es que quiero usar url como las de facebook

Cuando no te has logueado pues estas en facebook.com
Cuando estas en tu muro estas en facebook.com/usuario
Obviamente cuando estas logueado y no estas en tu muro, estas en facebook.com y ves todas las actualizaciones de tus amigos (Estono me intersa)

Lo que pretendo hacer es precisamente tener ese tipo de direccion url. Tengo un par de controladores que funcionan para las paginas estaticas, como el home el signup, etc y para realizar los mismos procesos de signup y signin...

Por lo que algunas url quedan de la siguiente manera
pagina principal proyecto.com
proyecto.com/sign
proyecto.com/connect
...

El caso es que me gustaria tener la url como he descrito pero no encuentro forma de hacerlo, me parece que tendria que ver con el .htacces mas que con el routes.php

He probado con lo siguiente
el controlador que mostrara el "muro" y las demas charadas de este sitio lo llame app.php, en el tengo un metodo llamado view. Segun yo tenia solo que modificar el routes.php para que cuando un usuario ingrese o se registre finalmente vaya a su "muro", he implemente esto

Código PHP:
Ver original
  1. $route['default_controller'] = "home";
  2. ...
  3. $route['(:any)'] = "app/view";

de tal forma que cuando fuese a calquier url proyecto.com/usuario este mostraria o mas bien ejecutaria el metodo view del controlador app.

Ok el problema de esto es que cuando uso otras url para otras tareas me lo friega pues son de tipo proyecto.com/tareax o proyecto.com/controlador/tareax y termina mostrandome o ejecutandome el metodo view del controlador app.

Al final como entendi que las configuraciones del routes.php se leen de arriba hacia abajo lo deje al final y puse o mas bien cree mis rutas "espeficias" para evitar que se ejecutara ese comportamiento si accedia o usaba url como proyecto.com/tareax, como por ejemplo

Código PHP:
Ver original
  1. $route['sign']="sign/index";

de esta forma puedo usar el metodo index del controlador sign a traves de la url proyecto.com/sign sin que me heche a perder la ruta que especifique... pero no puedo usar url tipo proyecto.com/controlador/metodo pues me carga lo de "page/view"

En fin perdon x tanta palabra pero el caso es... sabran ustedes como hacer url personalizadas como facebook.com/usuario, que tengo que modificar o como tendria que programar el controlador... sera algo del .htaccess?????
  #5 (permalink)  
Antiguo 14/11/2012, 23:46
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 13 años, 8 meses
Puntos: 21
Respuesta: codeigniter htaccess URL amigables,

busca esto en tu archivo aplicattion/config.php:

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

y cambia por:

$config['index_page'] = "";
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #6 (permalink)  
Antiguo 15/11/2012, 10:02
 
Fecha de Ingreso: julio-2011
Ubicación: Mexico
Mensajes: 36
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: codeigniter htaccess URL amigables,

Cita:
Iniciado por xxxivanxxx Ver Mensaje
busca esto en tu archivo aplicattion/config.php:

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

y cambia por:

$config['index_page'] = "";
Si amigo gracias por tu respuesta.
Eso lo modifique desde un principio y me parece que solo sirve para establecer lo que seria la pagina principal (index) y se encuentra en la ruta application/config/config.php

Alguien mas tiene una idea?
  #7 (permalink)  
Antiguo 15/11/2012, 12:04
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: codeigniter htaccess URL amigables,

eso tiene que ver con el routes.php, si le estas diciendo que para todas las urls entrantes mande a "app/view", pues no te va a servir el "controlador/metodo"
Tendrias que quitar eso para que te acepte las urls por defecto
  #8 (permalink)  
Antiguo 15/11/2012, 16:06
 
Fecha de Ingreso: julio-2011
Ubicación: Mexico
Mensajes: 36
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: codeigniter htaccess URL amigables,

Cita:
Iniciado por abimex Ver Mensaje
eso tiene que ver con el routes.php, si le estas diciendo que para todas las urls entrantes mande a "app/view", pues no te va a servir el "controlador/metodo"
Tendrias que quitar eso para que te acepte las urls por defecto
El problema es que la url tipo proyecto.com/nombredeusuario no es estatica en la parte de nombredeusuario.

Tomo el nombre de usuario con el que se registro para formar la url y lo uso para mostrar el muro del mismo pero la unica forma que se me ocurrio fue eso!

aceptando cualquier cosa -> app/view

seguire investigando, espero alguien me halla entendido!
  #9 (permalink)  
Antiguo 14/10/2016, 06:43
 
Fecha de Ingreso: noviembre-2015
Ubicación: En mi casa
Mensajes: 3
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: codeigniter htaccess URL amigables,

Cita:
Iniciado por vani18 Ver Mensaje
hola, estoy leyendo un tutorial de codeigniter, tal vez lo conozcan, hay pocos videotutoriales en español....
en el momento que tengo que hacer una prueba, voy a la pagina y se "llama" al controlador que esta prederteminado en routes, sucede que la clase, del controlador, tiene un metodo y en teoria tendria que acceder a ese metodo, escribir en la URL "/metodo" tambien luego se puede escribir "/parametros"

cuando escribo esto (hasta aca todo bien....)

[url]http://localhost/InicioCI/[/url]

pero cuando quiero llamar al metodo que contiene esa clase....asi...

[url]http://localhost/InicioCI/hola_mundo/hola_mundos[/url]

tira error mire todas las configuraciones.. etc, tengo activado el htaccess...

lo que si de esta manera puedo acceder...

[url]http://localhost/InicioCI/index.php/hola_mundo/hola_mundos[/url]

-----------

aca estas los codigos.....

ROUTES.PHP
Código PHP:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');


$route['default_controller'] = 'hola_mundo';
$route['404_override'] = '';


HOLA_MUNDO.PHP

Código PHP:
 <?php
class Hola_mundo extends CI_Controller {

       function 
__construct(){
      
parent::__construct();
   }

    function 
hola_mundos()    {
        echo 
'Hola mundos metodo';
    }
    public function 
index()    {
        echo 
'Hola mundo index';
    }
}
?>

.HTACCESS

Código PHP:
    <IfModule mod_rewrite.c>

        
RewriteEngine On
        RewriteBase 
/InicioCI/

        
RewriteCond %{REQUEST_URI} ^system.*
        
RewriteRule ^(.*)$ /InicioCI/index.php?/$[L]

        
RewriteCond %{REQUEST_URI} ^application.*
        
RewriteRule ^(.*)$ /InicioCI/index.php?/$[L]

        
RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond 
%{REQUEST_FILENAME} !-d
        RewriteRule 
^(.*)$ /InicioCI/index.php?/$[L]

    
##### rewrite exceptions
        
RewriteCond $!^(index.php|css|js|img|robots.txt)
        
RewriteRule ^(.*)$ /InicioCI/index.php/$[L]

    </
IfModule>

    <
IfModule !mod_rewrite.c>
        
ErrorDocument 404 /InicioCI/index.php
    
</IfModule

CONFIG.PHP

Código PHP:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');


$config['base_url']= 'http://localhost/InicioCI/';


$config['index_page'] = '';


$config['uri_protocol']    = 'AUTO';



$config['url_suffix'] = '.html';


$config['language']    = 'english';


$config['charset'] = 'UTF-8';


$config['enable_hooks'] = FALSE;



$config['subclass_prefix'] = 'MY_';



$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';


$config['allow_get_array']        = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger']    = 'c';
$config['function_trigger']        = 'm';
$config['directory_trigger']    = 'd'// experimental not currently in use


$config['log_threshold'] = 0;


$config['log_path'] = '';


$config['log_date_format'] = 'Y-m-d H:i:s';


$config['cache_path'] = '';


$config['encryption_key'] = '';


$config['sess_cookie_name']        = 'ci_session';
$config['sess_expiration']        = 7200;
$config['sess_expire_on_close']    = FALSE;
$config['sess_encrypt_cookie']    = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']        = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent']    = TRUE;
$config['sess_time_to_update']    = 300;


$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']        = "/";
$config['cookie_secure']    = FALSE;


$config['global_xss_filtering'] = TRUE;


$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;


$config['compress_output'] = FALSE;


$config['time_reference'] = 'local';



$config['rewrite_short_tags'] = FALSE;



$config['proxy_ips'] = '';


no entiendo por que el " RewriteRule ^(.*)$ /InicioCI/index.php/$1 [L] "


no me elimina el INDEX.PHP...


gracias
Hola vani18
Yo tengo exactamente el mismo problema y la verdad no sé como solucionarlo.
Es más he intentado todas las formas de editar el archivo .htaccess como lo indican la mayoría de los tutoriales. Si poder quitar el bendito index.php de la URL de mi proyecto.
Si encontró la solución le voy a agradecer la ayuda.
Un saludo cordial.
  #10 (permalink)  
Antiguo 16/11/2016, 18:46
Avatar de xlos_mas_pro  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 359
Antigüedad: 12 años, 11 meses
Puntos: 11
Respuesta: codeigniter htaccess URL amigables,

Yo utilizo el siguiente htacces y funciona perfecto
Código Htaccess:
Ver original
  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|contents|robots\.txt)
  3. RewriteRule ^(.*)$ index.php?/$1 [L]

y despues quitando el

Código PHP:
Ver original
  1. $config['index_page'] = "";

además lo pego en la raiz y dentro de la carpeta application

Etiquetas: clase, htaccess, php, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:17.