Foros del Web » Programando para Internet » PHP »

Eliminar partes de url

Estas en el tema de Eliminar partes de url en el foro de PHP en Foros del Web. Hola tengo una pequeña aplicacion con el patron mvc el cual me lanza las url de la siguiente manera: http://localhost/sitio/controller/metodo/parametros cuando ingreso al primer controller ...
  #1 (permalink)  
Antiguo 19/12/2018, 09:21
 
Fecha de Ingreso: octubre-2011
Mensajes: 132
Antigüedad: 12 años, 6 meses
Puntos: 4
Eliminar partes de url

Hola tengo una pequeña aplicacion con el patron mvc el cual me lanza las url de la siguiente manera:

http://localhost/sitio/controller/metodo/parametros

cuando ingreso al primer controller llama al primer metodo que es index entonces la url queda así:

http://localhost/sitio/blog/index/

ahora hice el sitio multilenguaje por lo que la url cambia a:

http://localhost/sitio/blog/index/es

lo que necesito es que el metodo index de la url no aparesca solo que muestre:

http://localhost/sitio/blog/es o http://localhost/sitio/es/blog, no se cual forma seria la mejor o más correcta.

este es mi archivo que lanza las url:

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. class Request
  5. {
  6.     private $_modulo;
  7.     private $_controlador;
  8.     private $_metodo;
  9.     private $_argumentos;
  10.     private $_modules;
  11.  
  12.     public function __construct()
  13.     {
  14.         if (isset($_GET['url'])) {
  15.             $url = filter_input(INPUT_GET, 'url', FILTER_SANITIZE_URL);
  16.  
  17.             $url = explode('/', $url);
  18.             $url = array_filter($url);
  19.  
  20.             /* modulos de la app */
  21.             $this->_modules = array('usuarios','admin');
  22.             $this->_modulo = strtolower(array_shift($url));
  23.  
  24.             if (!$this->_modulo) {
  25.                 $this->_modulo = false;
  26.             } else {
  27.                 if (count($this->_modules)) {
  28.                     if (!in_array($this->_modulo, $this->_modules)) {
  29.                         $this->_controlador = $this->_modulo;
  30.                         $this->_modulo = false;
  31.                     } else {
  32.                         $this->_controlador = strtolower(array_shift($url));
  33.                         if (!$this->_controlador) {
  34.                             $this->_controlador = 'index';
  35.                         }
  36.                     }
  37.                 } else {
  38.                     $this->_controlador = $this->_modulo;
  39.                     $this->_modulo = false;
  40.                 }
  41.             }
  42.  
  43.             $this->_metodo = strtolower(array_shift($url));
  44.             $this->_argumentos = $url;
  45.         }
  46.  
  47.         if (!$this->_controlador) {
  48.             $this->_controlador = DEFAULT_CONTROLLER;
  49.         }
  50.  
  51.         if (!$this->_metodo) {
  52.             $this->_metodo = 'index';
  53.         }
  54.  
  55.         if (!isset($this->_argumentos)) {
  56.             $this->_argumentos = array();
  57.         }
  58.     }
  59.  
  60.     public function getModulo()
  61.     {
  62.         return $this->_modulo;
  63.     }
  64.  
  65.     public function getControlador()
  66.     {
  67.         return $this->_controlador;
  68.     }
  69.  
  70.     public function getMetodo()
  71.     {
  72.         return $this->_metodo;
  73.     }
  74.  
  75.     public function getArgs()
  76.     {
  77.         return $this->_argumentos;
  78.     }
  79. }

y este mi .htaccess

Código:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Alguien con alguna idea de como solucionar esto, gracias...

Etiquetas: partes, 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 21:48.