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

creacion y ubicacion de htaccess

Estas en el tema de creacion y ubicacion de htaccess en el foro de Apache en Foros del Web. Hola amigos, en mi web las URLs son del tipo: dominio/index.php?mod=modulo1 dominio/index.php?mod=modulo2$parametro=1 entonces mi intencion es hacer esas URLs amigables, de la forma: dominio/modulo1 dominio/modulo2/1 ...
  #1 (permalink)  
Antiguo 17/11/2006, 05:11
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
creacion y ubicacion de htaccess

Hola amigos,

en mi web las URLs son del tipo:

dominio/index.php?mod=modulo1
dominio/index.php?mod=modulo2$parametro=1

entonces mi intencion es hacer esas URLs amigables, de la forma:

dominio/modulo1
dominio/modulo2/1

La estructura física de mi web es:

nombre_proyecto (carpeta)
- carpeta1 (carpeta)
- carpeta2 (carpeta)
....
- index.php (archivo)

el fichero index es el que se encarga segun el parametros que le llega de cargar un modulo u otro ...
o algo parecido.

Estoy leyendo de muchas fuentes el tema de creacion del htaccess, pero no consigo entenderlo del todo bien, mis preguntas serian:

1. según mi estructura del proyectos (carpetas) donde deberia colocar el .htaccess ?

2. qué reglas debería introducir en el .htaccess para poder obtener las URLs amigables que expongo arriba

3. supongo que los enlaces ( <a href=...) que aparezcan en mi web deben ser del estilo de las URLs amigables, no?

4. en la barra de navegacion se podria ver, el formato de las URLs amigables ?

Bueno, espero haberme explicado bien.

saludos y gracias por adelantado.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #2 (permalink)  
Antiguo 17/11/2006, 08:17
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Cita:
1. según mi estructura del proyectos (carpetas) donde deberia colocar el .htaccess ?
En mi experiencia con .htaccess he visto que se aplica a la carpeta donde esté y a las subcarpetas que contenga, es decir si metes ese archivo en la carpeta raiz de tu web, se aplicará a toda tu web, creo que eso es lo que necesitas.

Cita:
2. qué reglas debería introducir en el .htaccess para poder obtener las URLs amigables que expongo arriba
Probablemente no funcione a la primera pero sería algo así:

Código:
# Mod Rewrite
RewriteEngine on
RewriteRule ^(.*)dominio\.com/modulo([0-9]*)/([0-9]*) $1dominio.com/index.php?mod=$2&parametro=$3
RewriteRule ^(.*)dominio\.com/modulo([0-9]*) $1dominio.com/index.php?mod=$2
Cita:
3. supongo que los enlaces ( <a href=...) que aparezcan en mi web deben ser del estilo de las URLs amigables, no?
Si no lo haces, el mod rewrite es como si no existiera

Cita:
4. en la barra de navegacion se podria ver, el formato de las URLs amigables ?
En cuanto hayas hecho los puntos 1, 2 y 3


Saludos
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #3 (permalink)  
Antiguo 17/11/2006, 14:58
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Muchas gracias, ferny, por contestar tan rapido ...

En cuanto tenga tiempo me pongo con ello, y ya te comento como me ha ido, ok?

saludos y gracias de nuevo
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #4 (permalink)  
Antiguo 17/11/2006, 16:25
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola de nuevo,

vamos a ver, por pasos:

Estoy probando en localhost, y tengo activo el mod_rewrite de apache

1. he puesto el .htaccess al mismo nivel que mi fichero index.php, en la jerarquía explicada en el primer post.

2. tengo esta direccion http://localhost/aplicacion/index.php?mod=menu, y quiero convertirla en amigable asi, por ejemplo: http://localhost/aplicacion/menu

3.en el .htaccess he colocado esta regla:

RewriteRule ./(.*) ./index.php?mod=$1

4. los enlaces que apuntan a esa direccion estan asi:

< a href="./menu"> ....


Pero obtengo error 'Not Found', obiviamente no encuentra esa direccion, supongo que será por que el htaccess no la está nterpretando bien, no?

Qué tengo mal en el planteamiento realizado arriba? Alguna sugerencia?

gracias de antemano.

saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #5 (permalink)  
Antiguo 17/11/2006, 16:34
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
En windows ¿verdad? Prueba editando el httpd.conf de apache y activando el módulo si no estaba activo. Es decir, buscas la siguiente línea, te aseguras de que no lleve el # delante, y reinicias el apache para que tome los cambios.

#LoadModule rewrite_module modules/mod_rewrite.so

Si sigue sin funcionar, busca en google cómo leches se instala mod rewrite bajo windows

__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #6 (permalink)  
Antiguo 17/11/2006, 16:48
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
@ferny,gracias de nuevo por ser tan raudao y veloz, :)

si, estoy trabajando bajo Windows, y si que tengo instalado el mod_rewrite en el apache, ademas en el phpinfo.php que presenta la configuracion del apache si que aparece en la seccion 'Loaded Modules'

saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #7 (permalink)  
Antiguo 17/11/2006, 16:53
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Me lo imaginaba...
Es que yo estoy exactamente con el mismo problema, y todo lo que he probado no ha funcionado, como que el apache no reconoce el mod o no es capaz de leer el .htaccess o yo que sé... En cambio en el servidor con linux, perfecto.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #8 (permalink)  
Antiguo 17/11/2006, 17:07
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola de nuevo,

vamos a ver ..., he leido en la documentacion de apache, que puede ser que el nombre del fichero (.htaccess) no lo lea bien apache ejecutando bajo windows, y que por ello aconseja utilizar la directiva AccessFileName (en el http.conf) para cambiar el nombre de ese fichero, para que apache tome ese fichero como el .htaccess.

He cambiado el valor a esa directiva, y he puesto el fichero igual pero sin el punto inicial --> htaccess, pero parece que sigue sin funcionarme ...

como siempre, gracias por ser tan rapido.

saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #9 (permalink)  
Antiguo 17/11/2006, 17:21
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Buenas ...

tengo nuevas noticias, tambien sacadas de la documentacion de apache, es necesario que la directiva AllowOverrideno esté con valor none, ya que en ese caso no lee los .htaccess ...

Pero ni siquiera poniendole el valor All consigo que funcione ...

necesito ayuda,

saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #10 (permalink)  
Antiguo 18/11/2006, 03:48
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Ya te dije... yo probé de todo y no funcionaba
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #11 (permalink)  
Antiguo 22/11/2006, 06:01
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola de nuevo,

bueno, conseguí que el .htaccess funcionara bajo windows, configurando el http.conf para la carpeta donde va a ir colocado ese fichero ...

Ahora mi problema es otro, vamos a ver como lo puedo explicar ...

Ahora ya tengo enlaces de este estilo:

http://localhost/aplicacion/portada
http://localhost/aplicacion/comentarios -> éste módulo estaría paginado yse accedería a as páginas así:
http://localhost/aplicacion/comentarios/pag1 ... pag2 ....

el problema es que al querer volver desde, por ejemplo, http://localhost/aplicacion/comentarios/pag1 a http://localhost/aplicacion/portada accede bien, pero me muestra esta url en la barra de navegacion http://localhost/aplicacion/comentarios/portada, sobraria la "carpeta" comentarios,

me falta algo por hacer bien, ya sea en los enlaces html que son así:

<a href="portada"> ...</a>
<a href="comentarios">...</a>

o en el .htaccess que tengo las siguientes reglas

RewriteRule comentarios/pag(.*) index.php?mod=comentarios&_pagi_pg=$1
RewriteRule comentarios index.php?mod=comentarios
RewriteRule portada index.php?mod=portada

Espero se entienda mi problema, y espero vuestras sugerencias ...

gracias por adelantado y saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #12 (permalink)  
Antiguo 22/11/2006, 08:32
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Cita:
bueno, conseguí que el .htaccess funcionara bajo windows, configurando el http.conf para la carpeta donde va a ir colocado ese fichero ...
Dime cómo lo hiciste que me interesa mucho

Respecto a tu problema, tienes que poner los enlaces de la forma:

<a href="../portada"> ...</a>
<a href="../comentarios">...</a>

Creo que también funcionaría si pones la etiqueta <base> en el código fuente

<base href="http://localhost/aplicacion/">

Saludos
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #13 (permalink)  
Antiguo 22/11/2006, 09:10
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola,

1) bueno, las lineas en el http.conf serian estas:

...
AccessFileName .htaccess
...
## carpeta conde va colocado el .htaccess
<Directory "ruta absoluta de la carpeta donde colocar el .htaccess">
#Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
...

prueba asi, a ver que tal y me cuentas ...

2) en cuanto a los enlaces, te dire que ya he probado el caso de <a href="../portada> ..., pero no me vale, ya que para el caso en que vuelva a la portada desde .../aplicacion/comentarios/pag2 si funciona, pero si estoy en otra seccion al mismo nivel que portada se me comeria la carpeta de /aplicacion/, es decir ...

.../aplicacion/comentarios/pag2 -> .../aplicacion/portada OK
.../aplicacion/comentarios -> .../portada NO OK

lo de la etiqueta BASE no tiene mala pinta, pero no habria alguna forma de obtener eso mismo en PHP?, es que cuando suba la aplicacion al servidor de hosting me toca cambiar ese texto y ponerle el del dominio? O habria alguna forma de dejar el codigo preparado para que (PHP9 lo obtenga automaticamente ?

Gracias una vez mas ...

saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #14 (permalink)  
Antiguo 22/11/2006, 10:12
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Hola

Me funcionó simplemente activando el mod_rewrite.so y poniendo el directory como sigue (básicamente poniendo AllowOverride All)

Código:
<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
    Satisfy all
</Directory>
Sobre los link, puedes hacerlos también así y es independiente del nombre del host:

Código:
<a href="/aplicacion/portada">
Es decir empezando por / y luego poniendo la ruta que quieras mostrar. La / al principio significa que lo que viene después se busca a partir de la carpeta raiz de tu servidor.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #15 (permalink)  
Antiguo 22/11/2006, 11:03
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola de nuevo,

pues si no pongo la etiqueta BASE y coloco los enlaces como tú dices con la / delante sigo teniendo el mismo problema ...

Puede ser entonces que el fallo lo tenga en los RewriteRule del htaccess?

me gustaría que poder poner en los enlaces simplemente esto <a href="portada"..... o <a href="faqs/pag2 ......

y que las reglas del rewrite me mantengan la direccion base, que en este caso al trabajar en local seria 'htt://localhost/aplicacion', pero cuando se suba alservidor sería 'http://dominio/',

a ver si puedo entender de una vez como funciona el dichoso htaccess, me está costando bastante, jejeje

saludos y mil gracias de nuevo
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #16 (permalink)  
Antiguo 22/11/2006, 11:43
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Así:
Código PHP:
<base href="http://<?=$_SERVER['SERVER_NAME'?>/aplicacion">
Tomará automaticamente el nombre del host.

Pero si no funciona me parece que tienes que cambiar el htaccess y dejarlo asi:

RewriteRule aplicacion/comentarios/pag(.*) index.php?mod=comentarios&_pagi_pg=$1
RewriteRule aplicacion/comentarios index.php?mod=comentarios
RewriteRule aplicacion/portada index.php?mod=portada

Ya que como lo tienes actualmente supones que index.php está dentro del directorio aplicacion y creo que no es así ¿cierto?
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
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:00.