Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/12/2018, 09:21
stevens82
 
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...