Ver Mensaje Individual
  #10 (permalink)  
Antiguo 16/08/2012, 07:01
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 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.