Estaba buscando como crear permalinks o urls amigables (creo que es lo mismo) para una seccion para un cliente, el inconveniente es el siguiente:
La url original es esta:
http://localhost/Ciegos/Shows ( tengo el htaccess para ocultar las extenciones)
y con get (aca esta el problema)
http://localhost/Ciegos/Shows?Pag=2 (Tengo un paginador en caso de existir Pag)
Antes de comentar el inconveniente pongo el script
Código Apache:
Ver original
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.html <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /Ciegos/Shows/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /Ciegos/Shows.php [L] </IfModule>
(Debo de comentar que busque, y lei articulos sobre htaccess y no lo entiendo :S)
El problema esta en que Si entro a:
http://localhost/Ciegos/Shows/Gira-2012-en-san-bernardo
Ingresa perfecto (Seria la informacioon detallada del show)
Pero si entro a http://localhost/Ciegos/Shows/Pag/2
Que seria la ubicacion del paginador muestra lo que seria:
http://localhost/Ciegos/Shows/
El script php
Código PHP:
Ver original
<? # --- php ini include("ini.php"); # --- URL base de la aplicacion $base = "http://localhost/Ciegos/"; # --- Si es un permalink if(!(("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])==$base) && !(basename($_SERVER['REQUEST_URI']) == "Shows")){ # --- Obtener el slug # --- Consulta mysql $Consulta = $Mysql->Consulta("SELECT * FROM noticias WHERE permalink='".$slug."' LIMIT 1"); # --- Associando variable $Campo = $Mysql->Assoc($Consulta); echo '<div id="Noticia">'; echo '<h1>'.$Campo['titulo'].'</h1><time><img src="http://'.$_SERVER['HTTP_HOST'].'/Ciegos/Imagenes/Iconos/clock32.png" /> <span>'.$Campo['tiempo'].'</span> </time>'; echo '<img src="http://'.$_SERVER['HTTP_HOST'].'/Ciegos/Content/Noticias/'.$Campo['flyer'].'" class="Original"/>'; echo '<p>'.$Campo['informacion'].'</p>'; echo ' <div class="Social"> <iframe src="http://www.facebook.com/plugins/like.php?href=http://laentreviasrock.com/Shows/'.$Campo['permalink'].'&send=false&layout=button_count&width=125&show_faces=false&action=like&colorscheme=light&font=lucida+grande&height=20" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:125px; height:20px;" allowTransparency="true"></iframe> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://'.$_SERVER["HTTP_HOST"].'/Shows/'.$Campo['permalink'].'" data-lang="es">Twittear</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> <!-- Inserta esta etiqueta donde quieras que aparezca Botón +1. --> <div class="g-plusone" data-annotation="none" data-href="http://'.$_SERVER["HTTP_HOST"].'/Shows/'.$Campo['permalink'].'"></div> <!-- Inserta esta etiqueta después de la última etiqueta de Botón +1. --> <script type="text/javascript"> window.___gcfg = {lang: "es"}; (function() { var po = document.createElement("script"); po.type = "text/javascript"; po.async = true; po.src = "https://apis.google.com/js/plusone.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(po, s); })(); </script> </div> '; echo '</div>'; } # --- Paginacion # --- Configuracion $Consult = 'SELECT * FROM noticias ORDER BY id DESC'; $Reg = 5; $Botones = 5; $Class = 'Paginas'; # - Posicion $Pagina = 1; }else{ $Pagina = $Seguridad->Numero($_GET['Pag']); } # - Opciones $Consulta = $Mysql->Consulta($Consult); // - Consulta que devolvera los datos $Registros = $Reg; // - Registros a mostrar $Intervalo = $Botones; // - Intervalo entre botones # - Configuracion $Cantidad = $Mysql->Reg_Num($Consulta); // - Cantidad de registros $Desde = ($Pagina-1)*$Registros; // - Desde que registro empieza la busqueda $Botones = ($Intervalo*2)+1; // - Bonotes que se mostraran $i = 0; // - Necesario para los bucle for $Func = $Pagina-$Intervalo; // - Paginas en total $Consults = $Mysql -> Consulta($Consult.' LIMIT '.$Desde.' , '.$Registros); // - Consulta a bd con limite de reg # - Navegacion $Anterior = $Pagina-1; $Siguiente = $Pagina+1; echo '<div id="Noticias">'; # - Bucle while($Campo = $Mysql -> Assoc($Consults)){ # --- Noticias echo ' <div class="Noticia"> <h1>'.$Convert->Mayusculas($Campo['titulo']).'</h1> <time><img src="http://'.$_SERVER['HTTP_HOST'].'/Ciegos/Imagenes/Iconos/clock32.png" /> <span>'.$Campo['tiempo'].'</span> </time> <i><img src="Content/Noticias/'.$Campo['flyer'].'" class="Flyer" /></i> <p>'.$Convert->Mayusculas($Campo['informacion']).'</p> <a href="http://'.$_SERVER['HTTP_HOST'].'/Ciegos/Shows/'.$Campo['permalink'].'">[+info]</a> <div class="Social"> <iframe src="http://www.facebook.com/plugins/like.php?href=http://laentreviasrock.com/Shows/'.$Campo['permalink'].'&send=false&layout=button_count&width=125&show_faces=false&action=like&colorscheme=light&font=lucida+grande&height=20" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:125px; height:20px;" allowTransparency="true"></iframe> <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://'.$_SERVER["HTTP_HOST"].'/Shows/'.$Campo['permalink'].'" data-lang="es">Twittear</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> <!-- Inserta esta etiqueta donde quieras que aparezca Botón +1. --> <div class="g-plusone" data-annotation="none" data-href="http://'.$_SERVER["HTTP_HOST"].'/Shows/'.$Campo['permalink'].'"></div> <!-- Inserta esta etiqueta después de la última etiqueta de Botón +1. --> <script type="text/javascript"> window.___gcfg = {lang: "es"}; (function() { var po = document.createElement("script"); po.type = "text/javascript"; po.async = true; po.src = "https://apis.google.com/js/plusone.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(po, s); })(); </script> </div> </div>'; } # -- Empieza la Navegacion echo '<div class="Paginacion">'; if($Total>1){ # - Boton Anterior if($Pagina>1){ echo '<a href="?Pag='.$Anterior.'"><</a>'; } # - Paginas while ($i<$Botones) { if ($Func>0 and $Func<=$Total) { if($Func == $Pagina){ echo '<a class="Disabled">'.$Func.'</a>'; }else{ echo '<a href="?Pag='.$Func.'" class="'.$Class.'">'.$Func.'</a>'; } $i++; } if($Func>$Total){ $i=$Botones; } $Func++; } /* Simple echo $Pagina.' / '.$Total;*/ # - Boton Siguiente echo '<a href="?Pag='.$Siguiente.'">></a></div>'; }else{ echo '</div>'; } }else{ echo '<div id="Aviso">'.$Mensaje.'</div></div>'; } echo '</div>'; } ?>