Apache - Problema con url amigables

 
Vista:
sin imagen de perfil

Problema con url amigables

Publicado por Juan Pablo (5 intervenciones) el 17/06/2014 14:20:32
Tengo un problema al querer hacer las url amigables.

Lo que quiero es en vez de que figure http://pagina.com.ar/detalles.php?id=4; figure http://pagina.com.ar/detalles/4 .

Para esto cree el .htaccess en la raiz de la siguiente manera:

<IfModule mod_rewrite.c>
# Activar RewriteEngine
RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
# Reescribir la URL solicitada por el usuario
# Entrada: detalles/NOMBRE/
# Salida: detalles.php?id=NOMBRE

RewriteRule ^detalles/(.+)/$ detalles.php?id=$1
RewriteRule ^detalles/(.+)$ detalles.php?id=$1‏
RewriteRule ^detalles/([0-9])$ detalles.php?id=$1
</IfModule>


En el link para llamar la pagina esta puesto: <a href='/detalles/$fila[id]'>.

Cuando se hace click en el enlace va a la pagina http://pagina.com.ar/detalles/4 pero figura error 404.

Saludos y gracias si me dan una mano con esto que me esta trayendo un dolor de cabeza.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 103
Oro
Ha mantenido su posición en Apache (en relación al último mes)
Gráfica de Apache

Problema con url amigables

Publicado por xve (284 intervenciones) el 17/06/2014 17:08:04
Hola Juan Pablo no se si sera este el problema, pero despues de cada RewriteRule, tienes que indicarle que tiene que hacer...

Los flags pueden ser:
[R] quiere decir redireccionar
[F] provoca que la url esta prohibida. Error 403
[L] indica que esta es la última regla por lo se debe ignorar cualquier otra regla posterior
[NC] (No Case) no discrimina mayusculas de minusculas
[OR] Permite especificar varias condiciones para una misma ruta

Por lo general, para lo que tu quieres, seria algo así:
1
2
3
RewriteRule ^detalles/(.+)/$ detalles.php?id=$1 [L,NC]
RewriteRule ^detalles/(.+)$ detalles.php?id=$1‏ [L,NC]
RewriteRule ^detalles/([0-9])$ detalles.php?id=$1 [L,NC]

Coméntanos si se te ha solucionado con esto, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Problema con url amigables

Publicado por Juan Pablo (5 intervenciones) el 17/06/2014 17:17:39
Implemente esto que me pasaste y me tira este error que es el mismo de antes.

The requested URL /detalles.php/42 was not found on this server.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 103
Oro
Ha mantenido su posición en Apache (en relación al último mes)
Gráfica de Apache

Problema con url amigables

Publicado por xve (284 intervenciones) el 17/06/2014 18:00:01
Entonces Juan, pueden ser tres cosas...

1.- Que no este el modulo instalado
2.- Que no tengas habilitado en el VirtualHost acceso al modulo
3.- Que tenga alguna regla anterior que no permita llegar a estas reglas.

Puede eliminar todas las lineas superiores al RewriteRule para descartar la 3 opción?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con url amigables

Publicado por Juan Pablo (5 intervenciones) el 17/06/2014 22:50:34
1- El modulo instalado esta porque si hago un php_info() me lo muestra.
2- No se a que te refieres.
3- Borre todas las lineas anteriores y demas pero sigue igual.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 103
Oro
Ha mantenido su posición en Apache (en relación al último mes)
Gráfica de Apache

Problema con url amigables

Publicado por xve (284 intervenciones) el 18/06/2014 08:51:07
Hola Juan, entiendo que estas utilizando Apache como servidor web? me puedes mostrar tu <virtual host>?

En la linea donde tengas AllowOverride revisa que tengas puesto All algo así:
1
AllowOverride All

http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
AllowOverride defines las directivas que se puedes utilizar en .htaccess

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con url amigables

Publicado por Juan Pablo (5 intervenciones) el 18/06/2014 17:38:32
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
35
36
37
38
39
40
41
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
 
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                DirectoryIndex index.php
                Order allow,deny
                allow from all
        </Directory>
 
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
 Order allow,deny
                Allow from all
        </Directory>
 
        ErrorLog ${APACHE_LOG_DIR}/error.log
 
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
 
        CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
 </Directory>
 
</VirtualHost>

aqui esta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 103
Oro
Ha mantenido su posición en Apache (en relación al último mes)
Gráfica de Apache

Problema con url amigables

Publicado por xve (284 intervenciones) el 18/06/2014 19:36:38
Hola juan Pablo, ahora si que no se que puede ser...


haber haz la ultima prueba, creo que es esto... en vez de poner así:
1
RewriteRule ^detalles/(.+)/$ detalles.php?id=$1 [L,NC]
pon así:
1
RewriteRule ^detalles/(.*)/$ detalles.php?id=$1 [L,NC]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con url amigables

Publicado por Juan Pablo (5 intervenciones) el 18/06/2014 20:19:55
Lo cambie y sigue igual...esto me esta volviendo loco jaj
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar