Comunidad de diseño web y desarrollo en internet online

Problemas Con Mod_Rewrite, Apache

Citar            
MensajeEscrito el 01 Feb 2011 03:13 pm
Hola Estoy desarrollando una pagina de musica y bueno , tengo un archivo .htaccess y mmm bueno, las url son estaticas o eso quiero lograr
tengo url de forma
www.midominio.com/genero/artista/album/
Ahi todo bien, lo logro con la linea

"RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ album.php?Album=$3&Artista=$2&Generos=$1"

en mi localhost funciona de puta madre, pero en el servidor web ( 1and1.com ) no me va para nada, me funciona y me lleva a la pagina
pero me pone las variables en la url ( deja de ser url amigables )
y la url que es asi
"www.midominio.com/genero/artista/album/" termina siendo asi "

Termina siendo como originalmente es, asi :
http://www.midominio.com?Album=Album...eneros=Generos

mi archivo completo es asi :

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
AddType x-mapp-php5 .php
RewriteRule ^([a-zA-Z0-9_-]+)/$ Generos.php?Generos=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ Artista.php?Artista=$2&Generos=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ album.php?Album=$3&Artista=$2&Generos=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/(.*)\.html$ canciones.php?Cancion=$4&Album=$3&Artista=$2&Gener os=$1


NO tengo idea que pueda ser , porfavor echadme una mano.

Por vitesse92

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Feb 2011 04:39 pm
Hola!

Iba a escribir sobre el mismo problema... pero al ver tu post he decidido utilizarlo, en lugar de spammear, jeje.

Bueno, pues me ocurre lo mismo, tengo el .htaccess correctamente escrito, el mod_rewrite habilitado en el servidor, pero no me reconoce las url amigables. A ver si alguien saber por qué puede ser :-P.

Un saludo, suerte!

Por Gerupc

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Feb 2011 04:44 pm
Por cierto, mi código del .htaccess es:

Código :

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^ficha/(.+)/(.+)/\.php$ ficha.php?id=$1&titulo=$2

Por Gerupc

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Feb 2011 05:03 pm

Por rosillo83

18 de clabLevel



 

Desarrollador Web PHP&MySQL

firefox
Citar            
MensajeEscrito el 01 Feb 2011 05:37 pm
Buenas! Muchas gracias por el cheat-sheet :).

Pues he estado cacharreando teniéndolo como referencia (y añadiendo el Flag [L]) y nada.

Es como si no me lo reconociese :-S. El .htaccess lo pilla bien, porque he probado a redirigir con él, y el server, como he dicho antes, me indica que ha cargado el módulo mod_rewrite.

Alguna idea?

Por Gerupc

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Feb 2011 07:28 pm
mmmm pues eso si que es raro. Te lo comento porque yo tengo páginas alojadas en 1and1 y no me ha dado ningún problema el mod_rewrite

Cuando generas los enlaces ¿los generas en el formato correcto? por ejemplo, en vez de generar un enlace en la página que ponga <a href="www.miweb.es?lengua=es&pagina=inicio">inicio</a> se debería poner en su lugar el enlace deseado

<a href="www.miweb.es/es/inicio.html">inicio</a>

y la regla que hace la reescritura para este caso concreto sería

RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)\.html$ index.php?lengua=$1&pagina=$2 [L]


Espero que os sirva de ayuda

Por rosillo83

18 de clabLevel



 

Desarrollador Web PHP&MySQL

firefox
Citar            
MensajeEscrito el 01 Feb 2011 08:38 pm
Menudo crack, pues sí era eso ;).

Yo estaba poniendo los enlaces normales (con variables) esperando felizmente que Apache me los convirtiese a las url amigables que había establecido en el .htaccess... jeje.

Pero ahora, perfecto, mil gracias Rosillo83!!!

PD: ¿Sabes de qué manera puede influir en los estilos todo ésto? Porque me saca la url con el contenido que quiero, pero sin pasando olímpicamente del css y demás :-S

Por Gerupc

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Feb 2011 03:50 am
saludos, al decir estilos te refieres a tus archivos css?
bueno en dado caso, tal ves alguna de las reglas del .htaccess esta aplicando sobre la uri de tus css, en ese caso, lo que puedes hacer es meter tus css en un directorio (supongo que eso ya lo has hecho) y en ese directorio también meter un .htaccess desactivando el rewrite.
Recuerda que un .htaccess aplica al directorio donde esta y también a los sub directorios, a excepción de que un subdirectorio diga lo contrario :)
Espero que tengas suerte.

Por sahib.alejandro

5 de clabLevel



 

Programador web compulsivo

safari
Citar            
MensajeEscrito el 02 Feb 2011 10:58 am
Para el tema de las CSS yo lo que hago es crearme una constante con el nombre de la página. Ej:

define("WEB_URL","http://www.miweb.es/");

y cuando voy a cargar los css le pongo esto delante

<link rel="stylesheet" href="<?php echo WEB_URL;?>mistylesheet.css" type="text/css" />

y con esto tienes referenciado todas las rutas de forma absoluta, aplicable también a las imágenes

El define lo puedes hacer dinámicamente si quieres guardando la clave y el valor en una tabla en la propia base de datos.

Por rosillo83

18 de clabLevel



 

Desarrollador Web PHP&MySQL

firefox
Citar            
MensajeEscrito el 02 Feb 2011 08:07 pm
También puedes, en lugar del define, utilizar el tag <base> con su atributo href entre tus tags <head> y </head> y ahí poner la URL base de tu web.

Esta es buena practica para ahorrar en el tamaño de los archivos html generados, ya que la URL de la web es escrita solo una vez para todo el documento, y no repetidas veces a lo largo del mismo.

Un ejemplo:

Código HTML :

<html>
<head>
<base href="http://misuperweb.com/" />
<link rel="stylesheet" type="text/css" href="public/css/estilo.css" />
<script type="text/javascript" src="public/js/efectos.js"></script>
</head>
<body>
<img src="public/img/foto.jpg" />
</body>
</html>


En ese ejemplo, todas las rutas de los archivos css, js y las imagenes, seran relativas a la URL definda en <base>, es decir:

public/css/estilo.css apunta a http://misuperweb.com/public/css/estilo.css

Creo que el ejemplo es suficiente claro.

Y el directorio public debe tener el .htaccess desactivando el rewrite, como lo mencioné más arriba.

Tip: no olvides el slash "/" al final de la URL en el atributo href de <base>

Saludos =)

Por sahib.alejandro

5 de clabLevel



 

Programador web compulsivo

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.