Advertisement
viktormorales

PHP + HTACCESS: URLs amigables

Jan 6th, 2013
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.66 KB | None | 0 0
  1.  # -
  2. # DEFINE CONSTANTES
  3. # DESC: Define constantes base
  4. // Directorio raiz
  5.  if (!defined('ROOT_PATH'))
  6.     define('ROOT_PATH', realpath(dirname(__FILE__)));
  7.  // URL base
  8.  define('URL_PATH', 'http://misitioweb.com/');
  9.  // A continuacion definimos los directorios MODULOS y VISTAS entendiendo que nuestros archivos
  10.  // se encontraran dentro de cada una de dichas carpetas
  11.  define('MODULE_PATH', ROOT_PATH . "\\application\\modules");
  12.  define('VIEW_PATH', ROOT_PATH . "\\application\\views");
  13.  // Directorio de MODULOS y VISTAS por defecto
  14.  define('DEFAULT_FOLDER', 'home');
  15.  
  16.  # -
  17. # SEO URLs
  18. # DESC: algoritmo para crear SEO URLs
  19. // Quita los parametros REQUEST ($_GET)
  20.  list($path) = explode('?', $_SERVER['REQUEST_URI']);
  21.  // Quita el script path
  22.  $path = substr($path, strlen(dirname($_SERVER['SCRIPT_NAME']))+1);
  23.  // Crea directorios con el path y elimina items vacios
  24.  $urlParam = array();
  25.  foreach (explode('/', $path) as $dir) {
  26.     if (!empty($dir))
  27.         $urlParam[] = urldecode($dir);
  28.  }
  29.  if (count($urlParam) > 0) {
  30.     // Elimina extensiones (si se especifico alguna en la URL).
  31.     $last = $urlParam[count($urlParam)-1];
  32.     list($last) = explode('.', $last);
  33.     $urlParam[count($urlParam)-1] = $last;
  34.  }
  35.  
  36.  # -
  37. # MODULOS Y VISTAS
  38. # DESC: Carga modulos y vistas.
  39. // Define la variable de la carpeta segun el primer parametro: URL_PATH . "/" . $urlParam[0]
  40.  // Es decir: http://misitioweb.com/home o http://misitioweb.com/usuarios o http://misitioweb.com/carpeta
  41.  // Donde dicho primer parametro sera la carpeta que exista dentro de MODULE_PATH y VIEW_PATH
  42.  $_folder = ($urlParam[0]) ? $urlParam[0] : "home" ;
  43.  
  44.  // Define la variable del archiv segun el segundo parametro: URL_PATH . "/" . $urlParam[1]
  45.  // Es decir: http://misitioweb.com/home/
  46.  // Donde dicho segundo parametro es el archivo dentro de $_folder
  47.  $_file = ($urlParam[1]) ? $urlParam[1] : false ;
  48.  
  49.  // Si el archivo $_file existe, lo carga
  50.  // Caso contrario, llama al archivo index.php dentro de $_folder
  51.  // Se aplica la misma regla para MODULE y VIEW
  52.  
  53.  if (file_exists(MODULE_PATH . "\\{$_folder}\\{$_file}.php"))
  54.     $_module = MODULE_PATH . "\\{$_folder}\\{$_file}.php";
  55.  else
  56.     $_module = MODULE_PATH . "\\{$_folder}\\index.php";
  57.  
  58.  if (file_exists(VIEW_PATH . "\\{$_folder}\\{$_file}.php"))
  59.     $_view = VIEW_PATH . "\\{$_folder}\\{$_file}.php";
  60.  else
  61.     $_view = VIEW_PATH . "\\{$_folder}\\index.php";
  62.  
  63.  // Carga modulo o arroja error 404
  64.  if (!file_exists($_module))
  65.  {
  66.     header('HTTP/1.0 404 not found');
  67.     exit;
  68.  }
  69.  require($_module);
  70.  
  71.  // Carga vista o arroja error 404
  72.  if (!file_exists($_view))
  73.  {
  74.     header('HTTP/1.0 404 not found');
  75.     exit;
  76.  }
  77.  require($_view);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement