http://www.supagina.com/web/index.php?mod=news&id=2345Y queremos cambiarla por esta otra:
http://www.mipagina.com/web/noticias/2345.htmlEntonces deberíamos crear el directorio "noticias" (sin comillas) y allí subir un archivo .htaccess con la siguiente regla
RewriteEngine on RewriteBase /web/ RewriteRule ^noticias/(.*).html$ index.php?mod=news&id=$1Si quisiéramos darle un poco mas de seguridad podríamos utilizar expresiones regulares más exactas, por ejemplo, que solo se permitan números entre 1 y 6 caracteres
RewriteEngine on RewriteBase /web/ RewriteRule ^noticias/([0-9]{1,6}).html$ index.php?mod=news&id=$1Jugando con expresiones regulares podrás adaptar todas tus URL's complejas a URL's fáciles de recordar.
Deny from allEsto ultimo se utiliza mucho en, por ejemplo, directorios en donde se guardan los módulos de un sitio, ya que podremos incluir el archivo desde php, pero un extraño no podrá ingresar al archivo tipeando su dirección.
<?php function PAGINAR($_max,$_db,$_uri,$_sep,$_class) { // $_max obtiene el numero de filas a mostrar en cada pagina (default: 20) // $_db contiene la consulta SQL que genera el paginador (default: error) // $_uri contiene la URL de la pagina para propagarla (default: automatico) // $_sep contiene el/los caracter/es que separan cada numero de pagina, por default son espacios en blanco (opcional) // $_class contiene la clase personalizada para darle formato a los vinculos (opcional) if (empty($_max)) { $_max = 20; } else { $_max = $_max; } if (empty($_sep)) { $_sep = ' '; } else { $_sep = $_sep; } if (empty($_class)) { $_class = 'paginator'; } else { $_class = $_class; } if (empty($_GET['p'])) { $_pag = 1; } else { $_pag = $_GET['p']; } if (empty($_db)) { echo 'Error critico. No se ha seteado la variable $_db para realizar la consulta SQL'; exit; } else { $_db = $_db; } $_query = @mysql_query($_db); $_total = @mysql_num_rows($_query); $_total = ceil($_total/$_max); if (!$_uri) { $_uri = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; } else { $_uri = $_uri; } if ($_total >= 2) { for ($_i = 1; $_i <= $_total ;$_i++) { if ($_pag) { if (($_i == $_pag) || (!$_GET[p] && $_i == 1)) { echo '<span class="'.$_class.'">['.$_i.']</span>'.$_sep } else { echo '<a href="'.$_uri.'&p='.$_i.'" class="'.$_class.'"><span class="'.$_class.'">'.$_i.'</a>'.$_sep; } } } mysql_free_result($_query); } } ?>Modo de uso (explicado linea a linea):
<?php // indicamos el valor maximo $_paginador[max] = 20; // obtenemos el valor minimo actual if (empty($_GET['p']) || $_GET['p'] == 1) { $_paginador[min] = 0; } else { $_paginador[min] = ($_GET['p']-1) * $_paginador[max]; } // realizamos la consulta $_sql = mysql_query("SELECT * FROM `nombre_de_tabla` DESC LIMIT $_paginador[min],$_paginador[max]"); while ($_row = mysql_fetch_assoc($_sql)) { echo $_row['nombre_de_campo']; } // URL actual $_paginador['url'] = 'index.php?mod=fotos'; // Consulta sin LIMIT para contar los registros totales. $_paginador['db'] = 'SELECT * FROM `nombre_de_tabla`'; // indicamos el separador (opcional) $_paginador['sep'] = ' '; // indicamos la clase CSS (opcional) $_paginador['class'] = 'blue'; // llamamos al paginador PAGINAR($_paginador[max],$_paginador['db'],$_paginador['url'],$_paginador['sep'],$_paginador['class']); ?>