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

Error de URLs por .htaccess

Estas en el tema de Error de URLs por .htaccess en el foro de Apache en Foros del Web. Hoy acabo de ver un enlace super raro de mi web en google. http://misitio.es/track.php/68186866?id=68186866 y eso pasa al entrar en este otro enlace http://www.misitio.es/mp3/68186866 tengo ...
  #1 (permalink)  
Antiguo 30/11/2012, 03:55
 
Fecha de Ingreso: octubre-2012
Mensajes: 40
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Error de URLs por .htaccess

Hoy acabo de ver un enlace super raro de mi web en google.

http://misitio.es/track.php/68186866?id=68186866

y eso pasa al entrar en este otro enlace

http://www.misitio.es/mp3/68186866

tengo así mi htaccess:

Cita:
RewriteEngine On
RewriteBase /

# Redirección de www a dominio
RewriteCond %{HTTP_HOST} ^www\.misitio\.es$ [NC]
RewriteRule ^(.*)$ http://misitio.es/$1 [R=301,L]

# URLs amigas estructura web
RewriteRule ^musica$ musica.php
RewriteRule ^registro$ registro.php
RewriteRule ^login$ login.php
RewriteRule ^faqs$ faqs.php
RewriteRule ^aviso-legal$ aviso-legal.php
RewriteRule ^contacto$ contacto.php

# URLs amigas de direcciones dinámicas
RewriteRule ^artista/(.*)$ artista.php?n=$1
RewriteRule ^mp3/(.*)$ track.php?id=$1
Lo tengo puesto para que me redireccione al dominio sin www pero no me esperaba eso. Por favor alguien me ayuda? ¿porque me pasa eso?

y lo raro es que estoy haciendo pruebas y he quitado el htaccess y se sigue viendo la url http://misitio.es/track.php/68186866?id=68186866 ¿como es posible?

He estado haciendo más pruebas y he visto que el problema de que se vea ese enlace es por php, no por el htaccess, pero no se porque lo hace. El que ha hecho que se indexe esa página en google si ha sido el htaccess. Porque en la url del resultado salía la url amigable con www y al entrar se quitaba la www pero se transformaba en esa url tan rara. (yo uso dominio sin www)

Sigo probando y veo que si quito en la url cualquier cosa que no sea el "track.php" sigue mostrándose y no muestra error 404.

Ejemplos:
http://misitio.es/track.php/68186866?id=68186866
http://misitio.es/track.php/?id=68186866
http://misitio.es/track.php/68186866id=68186866
http://misitio.es/track.php/68186866?=68186866
http://misitio.es/track.php/68186866?id68186866
etc..

De momento eso lo he solucionado poniendo con php que si la url contiene "track.php" se redireccione a la nueva url.

Por favor una ayuda de alguien que entienda de esto. No se que pasa.

Última edición por Daniel Ulczyk; 30/11/2012 a las 11:26 Razón: se combinan 2 mensajes consecutivos del mismo usuario
  #2 (permalink)  
Antiguo 02/12/2012, 17:08
 
Fecha de Ingreso: octubre-2012
Mensajes: 40
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Error de URLs por .htaccess

Por favor ayuda es importante. Para resumir la pregunta es... ¿como tengo que poner el redireccionamiento a sin www en el htaccess para que no pase eso?
  #3 (permalink)  
Antiguo 03/12/2012, 12:03
 
Fecha de Ingreso: octubre-2012
Mensajes: 40
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Error de URLs por .htaccess

Bueno al final he decidido solucionarlo con php, al menos de momento me servirá. Para quien le interese lo he hecho así...

Código PHP:
<?
$urlnoamiga 
$_SERVER['REQUEST_URI'];
if (
substr($_SERVER['HTTP_HOST'],0,3) == 'www') {
    
header('HTTP/1.1 301 Moved Permanently'); 
    
header('Location: http://misitio.es'.$urlnoamiga); 
}
?>
Este trozo de código va en todas las páginas del sitio. Lo que hace es redireccionar al sitio sin www cuando se acceda con www. Si alguien quiere lo contrario aquí dejo el ejemplo...

Código PHP:
<?
$urlnoamiga 
$_SERVER['REQUEST_URI'];
if (
substr($_SERVER['HTTP_HOST'],0,3) != 'www') {
    
header('HTTP/1.1 301 Moved Permanently'); 
    
header('Location: http://www.misitio.es'.$urlnoamiga); 
}
?>
Además he puesto un código en las páginas dinámicas para que cuando se escriba algo que no exista se redireccione a error 404. Y también he agregado una condición para que redireccione a la url nueva si se accede a cualquier url que contenga "pagina.php". Esto último evita muchos errores con urls dinámicas en php.

Las páginas dinámicas en php típicas..
Código PHP:
pagina.php?valor=algo 
pueden verse con urls como...
Código PHP:
pagina.php/algo?valor=algo 
puedes hacer pruebas y comprobarlo por ti mismo.

Además cuando generas una url amiga también se puede acceder a la vieja o dinámica. Para solucionar estos dos problemas con php he hecho esto...

Para secciones...
Código PHP:
$urlnoamiga $_SERVER['REQUEST_URI'];
if(
strstr($urlnoamiga,'pagina.php')) {
    
header("HTTP/1.1 301 Moved Permanently");
    
header("Location: http://misitio.es/pagina");

Para páginas dinámicas tipo pagina.php?valor=algo
con url amiga tipo seccion/algo
Código PHP:
$urlnoamiga $_SERVER['REQUEST_URI'];
if(
strstr($urlnoamiga,'pagina.php')) {
    
header("HTTP/1.1 301 Moved Permanently");
    
header("Location: http://misitio.es/seccion/$variable");

Evidentemente la variable $urlnoamiga solo se declara una vez...
Código PHP:
$urlnoamiga $_SERVER['REQUEST_URI'];
if(
strstr($urlnoamiga,'pagina.php')) { 
    
header("HTTP/1.1 301 Moved Permanently"); 
    
header("Location: http://misitio.es/seccion/$variable"); 
}
if (
substr($_SERVER['HTTP_HOST'],0,3) == 'www') { 
    
header('HTTP/1.1 301 Moved Permanently');  
    
header('Location: http://misitio.es'.$urlnoamiga);  

He puesto todo esto aquí porque creo que es algo importante y que seguramente le pasará a muchos. Es una solución con php a problemas de contenido duplicado.

Por cierto y muy importante agregar una etiqueta canonical para informar de la url buena a los buscadores.

Código PHP:
<link rel="canonical" href="AQUÍ LA URL BUENA" /> 
Yo he puesto una etiqueta canonical en todas las páginas del sitio. Así todas quedan claras para los buscadores. Pues eso es todo, solo quería compartir esto para quien lo necesite y por si alguien quiere aportar algo.

pd: sobre la etiqueta canonical tengo que decir, que al menos hasta ahora, Yahoo y Bing(que por cierto ofrecen idénticos resultados) pasan olímpicamente de ella. Ya digo que hasta ahora, ya veremos...

Etiquetas: dominio, google, htaccess, url
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 18:43.