URL amigables con htaccess
Publicado por sergio (12 intervenciones) el 05/04/2017 20:08:11
Muy buenas a todos, seguramente este es un tema muy trillado... la cuestión es que por más tutoriales que veo no consigo hacer que las URL de mi sencillo blog (hecho a medida) sean amigables. Os paso mi código PHP y el archivo htaccess por si me podéis echar una mano. :-D
URL BLOG: http://localhost/sergio/blog.php
Cuando selecciono una entrada me lleva a otra página: DETALLE_ENTRADA.PHP
URL DETALLE_ENTRADA: http://localhost/sergio/detalle_entrada.php?id=1&con=esto-es-una-prueba
Como veis estoy pasando dos parámetros desde sergio/blog a sergio/detalle_entrada.
PHP
y este es mi código en htaccess:
Espero que alguien me pueda iluminar en este oscuro universo :-P
MIL GRACIAS!!!
URL BLOG: http://localhost/sergio/blog.php
Cuando selecciono una entrada me lleva a otra página: DETALLE_ENTRADA.PHP
URL DETALLE_ENTRADA: http://localhost/sergio/detalle_entrada.php?id=1&con=esto-es-una-prueba
Como veis estoy pasando dos parámetros desde sergio/blog a sergio/detalle_entrada.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
function urls_amigables($url) {
// Tranformamos todo a minusculas
$url = strtolower($url);
//Rememplazamos caracteres especiales latinos
$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
$repl = array('a', 'e', 'i', 'o', 'u', 'n');
$url = str_replace ($find, $repl, $url);
// Añadimos los guiones
$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace ($find, '-', $url);
// Eliminamos y Reemplazamos otros carácteres especiales
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace ($find, $repl, $url);
return $url;
}
?>
<?php
$sql = ("SELECT id, usuario, fecha, titulo, contenido_corto, imagen, url FROM entradas ORDER BY id DESC");
$result = mysqli_query($con,$sql);
include "functions.php";
while ($line = mysqli_fetch_array($result)) {
$titulo = urls_amigables($line['titulo']);
echo "<a href=\"detalle_entrada?id=".$line['id']."&con=".$titulo."\">Leer artículo</a>";
}
mysqli_close($con);
?>
y este es mi código en htaccess:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^([a-z]+)/?$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html
RewriteRule ^([a-z]+)/?$ $1.html [NC]
</IfModule>
ErrorDocument 404 http://localhost/sergio/404.php
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /sergio/
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
Rewriterule ^sergio/(.*)/(.*) detalle_entrada.php?id=$1&con=$2
</IfModule>
Espero que alguien me pueda iluminar en este oscuro universo :-P
MIL GRACIAS!!!
Valora esta pregunta


0