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

Duda con htaccess

Estas en el tema de Duda con htaccess en el foro de Apache en Foros del Web. Hola a todos, tengo pensado un proyecto en PHP, pero me gustaría utilizar el .htaccess en el proyecto más que nada por las urls amigables ...
  #1 (permalink)  
Antiguo 14/03/2012, 08:35
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Pregunta Duda con htaccess

Hola a todos, tengo pensado un proyecto en PHP, pero me gustaría utilizar el .htaccess en el proyecto más que nada por las urls amigables (mod_rewrite)... Bien, pues lo que busco es que los perfiles de usuario me queden de la siguiente forma:

Código:
http://www.miproyecto.com/pepe-lozano
Sin la url amigable, lo tengo de esta forma:
Código:
http://www.miproyecto.com/ver-perfil?id=8&user=pepe-lozano
Creo que está claro a lo que me refiero, ¿no?
Pues eso, como se podría o puede hacerse.

Saludos y Gracias !!
  #2 (permalink)  
Antiguo 15/03/2012, 09:55
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: Duda con htaccess

Hola @djboro88
La url amigable "es la de arriba"...

Supuestamente el id tambien cambia según el usuario (eso supongo), por lo que deberias pasar los dos en la url

para llegar a esto
http://www.miproyecto.com/ver-perfil...er=pepe-lozano
tu link deberia ser
http://www.miproyecto.com/8/pepe-lozano

y la regla

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)$ /ver-perfil?id=$1&user=$2 [L]

Si solo querés pasar el user
RewriteRule ^([^/]*)$ /ver-perfil?id=8&user=$1 [L]
y no pones el /8, pero si tu php que procesa usa el id, eso estaría mal.

Asi que te convendria
RewriteEngine On
RewriteRule ^([^/]*)$ /ver-perfil?user=$1 [L]
y los links como
http://www.miproyecto.com/pepe-lozano

Pero si tus nombre de usuario no son unicos (podrá haber dos carlos-garcia), no te serviria, y tendrias que recurrir a la primer variante

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 16/03/2012, 04:28
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Duda con htaccess

He hecho eso mismo con una web que tengo creada y subida a un servidor, pero no funciona. Subo el .htaccess y se va el estilo y además no coge las urls amigables.

¿Alguna idea del porque?
  #4 (permalink)  
Antiguo 16/03/2012, 07:21
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: Duda con htaccess

Si, puede ser que tengas algún problema según como tengas hechos los links a los estilos.

Te dejo un ejemplo funcionando, con dos variables, fijate que si reconoce los estilos y el javascript y que las rutas de estos en el html son absolutas, es decir empiezan por /, usá el ejempo de htacces de esa página.

Demo:
http://mr1.emprear.com/

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 16/03/2012, 11:02
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Duda con htaccess

Pues ahora he hecho los cambios que salen en la Web y me sale:
ERROR 404 - Página no encontrada

¿Influye que el servidor sea de 1&1?

Mira la web con la que hago estas pruebas es:
Código:
http://www.artyos.com/serpis/missil/read-article-miscellaneous?id=1&title=Metafísica
En este caso quiero que se muestre como comentaba en un principio:
Código:
http://www.artyos.com/serpis/missil/1/Metafísica
En el .htaccess, tengo lo siguiente:
Código:
Options +Indexes +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([^/]*)/([^/]*)$ /read-article-miscellaneous?id=$1&title=$2 [L]
Y como digo sale el error 404.
¿Alguna idea del porqué?

NOTA: Cuando consigamos que funciones con las urls amigables, me gustaria como hacer para pasar los caracteres todos a minusculas y evitar los acentos o eñes.
Y si es posible que la url obvie las tres W (www).

Saludos !!
  #6 (permalink)  
Antiguo 16/03/2012, 11: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: Duda con htaccess

fijate lo siguiente, tu página de destino es (el php que recoge los valores)

http://www.artyos.com/serpis/missil/...-miscellaneous
pero tu regla la busca en
http://www.artyos.com/read-article-miscellaneous?id=$1&title=$2 [L]

Deberías de poner
RewriteRule ^([^/]*)/([^/]*)$ /serpis/missil/read-article-miscellaneous?id=$1&title=$2 [L]

Si aún así no te funciona, montá un ejemplo con el mismo código de mi demo, y si funciona, empezá a susbtituir por tus valores a ver en que momento se produce algún error

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 16/03/2012, 11:27
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Duda con htaccess

Probando y leyendo de varias web he conseguido entender lo siguiente:

Código:
Options +Indexes +FollowSymLinks
RewriteEngine On
RewriteBase /serpis/missil/
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*)/(.*)$ read-article-miscellaneous?id=$1&title=$2 [L]
El RewriteBase, le leido que es necesario para los servidores de 1&1.
Y a su vez he cambiado los ([^/]*) por (.*)

¡¡ Y ahora si que funciona !!

Mi incógnita es:
¿Cómo hacer que aparezcan las url con WWW (aunque no se escriban)?
¿Es posible sustituir los "(espacios)" desde el htaccess?
¿Y como quitar los acentos y eñes?

PD: Se como se hace en php.

Saludos !!

Última edición por djboro88; 16/03/2012 a las 11:40
  #8 (permalink)  
Antiguo 16/03/2012, 12:15
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: Duda con htaccess

Regla genérica para remover espacios en blanco no encontré ninguna que sea efectiva, como en el espacio en blanco hacés una substitución, tendrías que saber cuantos son los componentes del nombre del archivo

por ejemplo, si tengo un archivo "archivo con espacios.html" 3 componentes en el nombre puedo usar esto

RewriteRule (.*)\-(.*)\-(.*)\.html "/$1 $2 $3.html" [L]
Demo
http://mr1.emprear.com/archivo-con-espacios.html

Suponé que tenes otro archivo con dos componentes
otro archivo.html, la regla anterior no serviría para
http://mr1.emprear.com/otro-archivo.html
pero si para uno de nombre
otro archivo .html -->notar que hay un espacio en blanco antes del punt
y deberias llamarlo
http://mr1.emprear.com/otro-archivo-.html --> debe incluir el guión

Usa los links para verificar
En definitiva, algo muy complicado
Recomendación : Jamás usar nombres de archivo con espacios en blanco !!! ni siquiera si estas trabajando en windows
Con las ñ í, etc es más complicado aun y requiere de como este compilado linux para dar soporte a esos caracteres


Ah y se me olvidaba, para siempre www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^dominio.com
RewriteRule (.*) http://www.dominio.com/$1 [R=301,L]


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/03/2012, 13:15
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Duda con htaccess

Hola de nuevo !!

El orden de las reglas y condiciones supongo que será importante...
¿Cuál es el orden correcto?

Lo tengo de la siguiente forma:
Código:
Options +Indexes +FollowSymLinks

#ACTIVA EL MOD_REWRITE
RewriteEngine On

#RUTA BASE
RewriteBase /serpis/missil/

#CONDICIONES
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^artyos.com

#REGLAS
RewriteRule (.*) http://www.artyos.com/$1 [R=301,L]
RewriteRule ^(.*)/(.*)$ read-article-miscellaneous?id=$1&title=$2 [L]
Al pulsar enter para que la ruta sea:
Código:
http://www.artyos.com/serpis/missil/1/Metafísica
Me lleva a:
Código:
http://www.artyos.com/Metafísica
Lo he intentado de varias formas pero no lo consigo...
  #10 (permalink)  
Antiguo 16/03/2012, 16:08
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: Duda con htaccess

No, eso no funciona asi, las condiciones anteceden a cada regla, pero si la regle se cumple y finaliza con el modificador [L], ya no se ejecuta ninguna otra regla.

Seria algo asi

Código Apache:
Ver original
  1. RewriteCond %{SCRIPT_FILENAME} !-d  
  2. RewriteCond %{SCRIPT_FILENAME} !-f
  3. RewriteRule ^(.*)/(.*)$ read-article-miscellaneous?id=$1&title=$2 [L]
  4.  
  5. RewriteCond %{HTTP_HOST} ^artyos.com
  6. RewriteRule (.*) http://www.artyos.com/$1 [R=301,L]

y desde luego el orden influye segun lo que quieras hacer
Volvé a mirar mi ejemplo en http://mr1.emprear.com
Te dejé el listado de directorios, comenza por index.php
le agregué varias cosas para que veas como funciona

Las pruebas para los archivos con espacios hacelas desde los links de mis posts anteriores

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/03/2012, 17:41
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Duda con htaccess

Pues por lo visto en mi servidor no funciona...

Con las WWW funciona perfectamente:
Código:
http://www.artyos.com/serpis/missil/1/Metafísica
Pero en el momento que entras sin ellas:
Código:
http://artyos.com/serpis/missil/1/Metafísica
Te manda a:
Código:
http://www.artyos.com/Metafísica

¿Alguna idea del porque?

Este es el HTACCESS
Código:
Options +Indexes +FollowSymLinks

RewriteEngine On

RewriteBase /serpis/missil/

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)/(.*)$ read-article-miscellaneous?id=$1&title=$2 [L]
 
RewriteCond %{HTTP_HOST} ^artyos.com
RewriteRule (.*) http://www.artyos.com/$1 [R=301,L]

Etiquetas: htaccess, mod, perfil, personalizar, php, rewrite
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 06:37.