Foros del Web » Administración de Sistemas » Apache »

Url amigables apache & php

Estas en el tema de Url amigables apache & php en el foro de Apache en Foros del Web. Hola saludos amigos, una pregunta quiero hacer url amigables en vez de miweb.com/somos.php sea miweb.com/somos/ <---- tengo un .htaccess con el siguiente codigo: Código HTML: ...
  #1 (permalink)  
Antiguo 10/08/2012, 23:55
Avatar de jose mario  
Fecha de Ingreso: abril-2007
Mensajes: 165
Antigüedad: 17 años
Puntos: 0
Pregunta Url amigables apache & php

Hola saludos amigos, una pregunta quiero hacer url amigables en vez de miweb.com/somos.php sea miweb.com/somos/ <---- tengo un .htaccess con el siguiente codigo:
Código HTML:
# Activar RewriteEngine
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*)$ $1.php
Localmente funciona, pero en linea no, mod_rewrite esta activo segun soporte godaddy.com alguien tiene un idea de como hacerlo de otra forma o si ya lo ha hecho sobre este provedor gracias de ante manos, y Saludos!
  #2 (permalink)  
Antiguo 11/08/2012, 09:48
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Url amigables apache & php

basicamente lo que querés es remover la extensión de los php

http://www.forosdelweb.com/f58/quita...6/#post4205380

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 11/08/2012, 22:24
Avatar de jose mario  
Fecha de Ingreso: abril-2007
Mensajes: 165
Antigüedad: 17 años
Puntos: 0
Respuesta: Url amigables apache & php

Cita:
Iniciado por emprear Ver Mensaje
basicamente lo que querés es remover la extensión de los php

http://www.forosdelweb.com/f58/quita...6/#post4205380

Saludos
asi es voy probar el codgo y te cuento muchas gracias por tu respuesta.
  #4 (permalink)  
Antiguo 11/08/2012, 22:43
Avatar de jose mario  
Fecha de Ingreso: abril-2007
Mensajes: 165
Antigüedad: 17 años
Puntos: 0
Respuesta: Url amigables apache & php

te cuento que lo probe si escribes http://makepixels.com/somos.php sale pero si en cambio http://makepixels.com/somos/ sale:

The requested URL /somos/ was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

No me funciono tenog que hacer algo mas o alguna configuracion extra.
  #5 (permalink)  
Antiguo 12/08/2012, 00:30
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Url amigables apache & php

Probá con esto
Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4.  
  5. # Remover trailing slashes.
  6. # ejemplo  miweb.com/algo/ redirije a miweb.com/algo
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule ^(.*)/$ /$1 [R=permanent,QSA]
  9.  
  10. # Redirije a PHP si existe.
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. RewriteCond %{REQUEST_FILENAME} !-d
  13. RewriteCond %{REQUEST_FILENAME}\.php -f
  14. RewriteRule ^(.*)$ $1.php [L,QSA]
Algunos servers necesitan explicitar el RewriteBase

Fijate mi ejemplo
http://mr4.emprear.com/somos.php
http://mr4.emprear.com/somos
http://mr4.emprear.com/otracarpeta/algo.php
http://mr4.emprear.com/otracarpeta/algo

Funciona de las dos maneras para el mismo archivo, y si le agregás la barra al final la remueve de la url

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 15/08/2012, 09:06
Avatar de jose mario  
Fecha de Ingreso: abril-2007
Mensajes: 165
Antigüedad: 17 años
Puntos: 0
Respuesta: Url amigables apache & php

Cita:
Iniciado por emprear Ver Mensaje
Probá con esto
Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4.  
  5. # Remover trailing slashes.
  6. # ejemplo  miweb.com/algo/ redirije a miweb.com/algo
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule ^(.*)/$ /$1 [R=permanent,QSA]
  9.  
  10. # Redirije a PHP si existe.
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. RewriteCond %{REQUEST_FILENAME} !-d
  13. RewriteCond %{REQUEST_FILENAME}\.php -f
  14. RewriteRule ^(.*)$ $1.php [L,QSA]
Algunos servers necesitan explicitar el RewriteBase


no me funciono hay que hacer un configuracion a php o algo?
Fijate mi ejemplo
http://mr4.emprear.com/somos.php
http://mr4.emprear.com/somos
http://mr4.emprear.com/otracarpeta/algo.php
http://mr4.emprear.com/otracarpeta/algo

Funciona de las dos maneras para el mismo archivo, y si le agregás la barra al final la remueve de la url

Saludos
  #7 (permalink)  
Antiguo 15/08/2012, 09:20
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Url amigables apache & php

con lo que te he puesto debería funcionar, tal cual en mis ejemplos, dame un rato y te pongo todo el código en un zip y lo probás en tu server

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 15/08/2012, 09:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Url amigables apache & php

http://mr4.emprear.com/mr4.zip
Temporalmente tu actual .htaccess renombralo de otra manera

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 16/08/2012, 01:22
Avatar de jose mario  
Fecha de Ingreso: abril-2007
Mensajes: 165
Antigüedad: 17 años
Puntos: 0
Respuesta: Url amigables apache & php

emprear muchisimas gracias me funciono investige y hay que quitarle el signo + en Options FollowSymLinks <-- asi seria ahora bien la cosa es dinamica nesecito pasar la variable asi: somos/78 en vez de somos.php?id=78 sabes como puedo hacer sin perder lo que ya hemos logrado gracias por tu ayuda estoy bien agradecido. Estare pendiente.
  #10 (permalink)  
Antiguo 16/08/2012, 07:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Url amigables apache & php

Curiosamente en varios de mis servidores es necesarios utilizar el signo +.

Antes de contestarte lo otro te explico algo que repito constantemente.
Para que este asunto de las urls amigables tenga sentido, hay que realizar un análisis muy exahustivo "antes" y preveer las distintas variantes.
En tu caso, dada la nueva pregunta que hacés, se generan dudas sobre ti estructura.

Fijate, con esta regla solamente, quitando todo lo que hicimos antes

Código Apache:
Ver original
  1. RewriteRule ^somos/(.*)$ /somos.php?id=$1 [L]

Conseguiríamos el mismo resultado, ejemplo
http://mr4.emprear.com/somos/97
http://mr4.emprear.com/somos/55

ahora, si por casualidad tambien tuieses una carpeta "somos" en la raiz, esta nunca sería accesible, si pusieses
http://mr4.emprear.com/somos/
ó
http://mr4.emprear.com/somos

te llevaría a somos.php y en id no te aparecería nada, como obviamente vos tenés decisión de como se llaman tus carpetas, podés cambiar los nombres para prevenir el problema, ó, y solo lo pongo como ejemplo, usas

Código Apache:
Ver original
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteRule ^somos/(.*)$ /somos.php?id=$1 [L]
Con lo cual ya sería accesible

A partir de aqui me pregunto
Todos tus php son dinámicos (reciben algún parámetro?)
tu idea cual era al ocultar la extensión? Te advierto que eso no mejora nada el seo, o simplemente querías hacer amigable la url evitando tener que poner el ?id=xxx

Se entiende a lo que me refiero?

Concluyendo, con esto conseguis las dos cosas

Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4.  
  5. # Remover trailing slashes.
  6. # ejemplo  miweb.com/algo/ redirije a miweb.com/algo
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteRule ^(.*)/$ /$1 [R=permanent,QSA]
  9.  
  10. RewriteCond %{REQUEST_FILENAME} !-f
  11. RewriteCond %{REQUEST_FILENAME} !-d
  12. RewriteRule ^somos/(.*)$ /somos.php?id=$1 [L]
  13.  
  14. #### si tenés mas php dinámicos lo insertás aqui, ya que al usar [L] si la regla se cumple, ya no busca mas nada en las reglas subsiguientes
  15. # y como la primera parte de la regla es una expresión, podés usar otro valor mas descriptivo, por ejemplo
  16. RewriteRule ^categoría/(.*)$ /somos.php?id=$1 [L]
  17.  
  18. # Redirije a PHP si existe.
  19. RewriteCond %{REQUEST_FILENAME} !-f
  20. RewriteCond %{REQUEST_FILENAME} !-d
  21. RewriteCond %{REQUEST_FILENAME}\.php -f
  22. RewriteRule ^(.*)$ $1.php [L,QSA]


Ahora te resta saber que es exactamente lo que necesitas y aplicar solo lo requerido, cuantas más reglas,naturalmente, más se tarda en procesar el .htaccess


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 16/08/2012, 09:25
Avatar de jose mario  
Fecha de Ingreso: abril-2007
Mensajes: 165
Antigüedad: 17 años
Puntos: 0
Respuesta: Url amigables apache & php

Hola como estas gracias por tu ayuda bueno no todas son dinamicas solo algunas que en relidad son como 5 paginas que consultan db utilice tu codigo asi:

Código PHP:
Options FollowSymLinks
RewriteEngine On
RewriteBase 
/

# Remover trailing slashes.
# ejemplo  miweb.com/algo/ redirije a miweb.com/algo
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule 
^(.*)/$ /$[R=permanent,QSA]

# Redirije a PHP si existe.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d
RewriteCond 
%{REQUEST_FILENAME}.php -f
RewriteRule 
^(.*)$ $1.php [L,QSA]

#### si tenés mas php dinámicos lo insertás aqui, ya que al usar [L] si la regla se cumple, ya no busca mas nada en las reglas subsiguientes
# y como la primera parte de la regla es una expresión, podés usar otro valor mas descriptivo, por ejemplo


### el archivo se llama ln.php (ln= leer noticia) la idea es que se vea
misitio.com/ln/79 y las que no son dinamicas como somos se vean misitio.com/somos/ , yo hice este cambio al codigo que me diste y me da error 500 internal server error lo demas funiocna perfecto los link los pongo asi 
<a href='ln/78'>Leer noticia</aestoy haciendo algo malo?:serio:

RewriteRule ^ln/(.*)$ /ln.php?id=$[L]
 
################


# Redirije a PHP si existe.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d
RewriteCond 
%{REQUEST_FILENAME}.php -f
RewriteRule 
^(.*)$ $1.php [L,QSA
Gracias por tu ayuda...
  #12 (permalink)  
Antiguo 16/08/2012, 22:51
Avatar de jose mario  
Fecha de Ingreso: abril-2007
Mensajes: 165
Antigüedad: 17 años
Puntos: 0
Pregunta Respuesta: Url amigables apache & php

las dos cosas cuando sean simples paginas php sin variables sea con dominio.com/somos/ o dominio.com/somos y se llevan variable como dominio.com/ln.php?id=78 mejor salga dominio.com/ln/78/ eso es todo.
Gracias por tu ayuda.

Etiquetas: direcciones, onda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:43.