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

Redirección 301 en .htaccess

Estas en el tema de Redirección 301 en .htaccess en el foro de Apache en Foros del Web. Hola, estoy creando un fichero .htaccess ya que he cambiado las extensiones HTML por PHP, el fichero contiene solo esto. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código shell: Ver ...
  #1 (permalink)  
Antiguo 24/10/2011, 05:04
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
Redirección 301 en .htaccess

Hola, estoy creando un fichero .htaccess ya que he cambiado las extensiones HTML por PHP, el fichero contiene solo esto.

Código shell:
Ver original
  1. Redirect 301 fichero1.html fichero1.php
  2. Redirect 301 fichero2.html fichero2.php
  3. Redirect 301 fichero3.html fichero3.php

Pero cuando accedo al fichero obtengo un error 404, ¿qué estoy haciendo mal?

Gracias
  #2 (permalink)  
Antiguo 24/10/2011, 05:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Redirección 301 en .htaccess

¿Existe el archivo?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 24/10/2011, 05:42
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 1 mes
Puntos: 140
Respuesta: Redirección 301 en .htaccess

Hola, si no tengo entendido mal el redirect 301 siempre debe indicar una dirección absoluta:
Cita:
Redirect 301 /archivo1.html http://dominio.com/dondeeste/archivo1.php
He añadido barra delante de archivo1.html, esto no se si es necesario, recomendable o que, pero por si no te funciona sin barra...
  #4 (permalink)  
Antiguo 24/10/2011, 05:54
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
Respuesta: Redirección 301 en .htaccess

Sí, el archivo PHP existe (el HTML no), he probado con /, con el dominio completo en uno y con el dominio completo en el PHP...

Sigo encontrando 404

Gracias
  #5 (permalink)  
Antiguo 24/10/2011, 06:18
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 1 mes
Puntos: 140
Respuesta: Redirección 301 en .htaccess

No se donde puede estar el error, pero otra manera que puedes probar:

Cita:
RewriteEngine On
RewriteBase /
RewriteRule ^archivo1.html$ /archivo1.php [L,R=301]
etc etc, o bien para todos los archivos:
RewriteRule ^(.+)\.html$ http://dominio.com$1.php [L,R=301]
Suerte!
  #6 (permalink)  
Antiguo 24/10/2011, 22:20
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Redirección 301 en .htaccess

Cita:
The old URL-path is a case-sensitive (%-decoded) path beginning with a slash. A relative path is not allowed. The new URL should be an absolute URL beginning with a scheme and hostname.
lo expresado por @charlyalegret es lo correcto y confirmo lo del la / en la ruta del viejo archivo

o sea que la vieja url debe comenzar con un slash / y la nueva debe ser una url completa incluyendo el protocolo




Redirect 301 /viejo.php http://dominio.com/nuevo.php


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 25/10/2011, 01:35
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
Respuesta: Redirección 301 en .htaccess

Todas las técnicas expuestas son ignoradas, así que debe ser algún probema en la configuración del servidor

Gracias a todos
  #8 (permalink)  
Antiguo 25/10/2011, 04:07
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 1 mes
Puntos: 140
Respuesta: Redirección 301 en .htaccess

Gracias @emprear por la confirmación!
@posprodukcion, otra manera de hacer redirecciones 301 es añadiendo en la cabecera del archivo original el siguiente código, aunque eso significaría mentener los archivos originales. Nunca he trabajado de esta manera pero seguro que puedes encontrar más información por la red. Aunque es un códiog php y tus archivos originales son .html, yo alguna vez he probado de añadir código php a un archivo con extension .html y el servidor me lo ha procesado bien. Suerte.

Cita:
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.nueva-direccion.com" );
?>
  #9 (permalink)  
Antiguo 25/10/2011, 09:54
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Redirección 301 en .htaccess

@charlyalegret, me concentré tanto en el .htaccess que se me paso esa,

@PosProdukcion, para hacer que tus .html se procesen como php (y no debería interferir en el contenido), tenés que,

Posibilidad 1. Que Php esté instalado como módulo de Apache, en ese caso agregás en .htaccess

Código Apache:
Ver original
  1. AddType application/x-httpd-php .html

Posibilidad 2. Que Php esté instalado como Cgi, en ese caso agregás
Código Apache:
Ver original
  1. Options +ExecCgi
  2. AddHandler application/x-httpd-php .html

Posibilidad 3, Que Php este como CGi/FastCgi, aquí ni estoy nada seguro porque ninguno de mis hosts usa ese método)


Para saber como esta instalado php en Apache, ejecuta phpinfo(); y fijate en el cuarto valor Server API

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 25/10/2011, 10:15
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 1 mes
Puntos: 140
Respuesta: Redirección 301 en .htaccess

Muchas gracias @emprear, yo tengo el Addtype activado para solucionar un tema de compresión en gz que solucioné de esa manera, y más adelante haciendo alguna prueba comprobé que podía poner código php en un archivo .html y no relacioné lo primero con lo segundo. Gracias por la aclaración ya que yo di por supuesto que esto de poner codigo php en .html era siempre posible.

Comentar además que almenos, en mi caso, al activar lo de Addtype perdí la información de los headers de los archivos .html como son el caché o codificacion-caracteres, lo cual solucioné tal como explico en este otro post, por si alguien se encuentra con el problema:
http://www.forosdelweb.com/f64/quiero-mejorar-pagespeed-mi-sitio-web-939699/index2.html#post3997415
  #11 (permalink)  
Antiguo 25/10/2011, 10:48
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Redirección 301 en .htaccess

Estuve leyendo el post al que referis, es cierto que no hay una solución absoluta, ya que siempre estamos dependiendo de que versión de Apache se está usando y de la configuración particular del servidor. Pero hoy en día es raro que los servidores no trabajen con

mod_expires
mod_headers
mod_deflate

habilitados, si es así, lo mas simple es

Para cache
Código Apache:
Ver original
  1. # 1 AÑO
  2. <FilesMatch "\.(ijpg|jpeg|png|gif|swf|eot|ttf|pdf|flv)$">
  3. Header set Cache-Control "max-age=29030400, public"
  4. </FilesMatch>
  5. # 1mes
  6. <FilesMatch "\.(xml|txt|css|js)$">
  7. Header set Cache-Control "max-age=2419200, proxy-revalidate"
  8. </FilesMatch>
  9. # no cachear
  10. <FilesMatch "\.(pl|cgi|spl|php|phtml)$">
  11.     Header unset Cache-Control
  12.     Header unset Expires
  13.     Header unset Last-Modified
  14.     FileETag None
  15.     Header unset Pragma
  16. </FilesMatch>

En cuanto a la compresion

Código Apache:
Ver original
  1. AddOutputFilterByType DEFLATE application/xhtml+xml
  2. AddOutputFilterByType DEFLATE text/plain
  3. AddOutputFilterByType DEFLATE text/html
  4. AddOutputFilterByType DEFLATE text/xml
  5. AddOutputFilterByType DEFLATE text/css
  6. AddOutputFilterByType DEFLATE text/javascript
  7. AddOutputFilterByType DEFLATE application/xml
  8. AddOutputFilterByType DEFLATE application/xhtml+xml
  9. AddOutputFilterByType DEFLATE application/rss+xml
  10. AddOutputFilterByType DEFLATE application/javascript
  11. AddOutputFilterByType DEFLATE application/x-javascript

Para corregir la codificación (supongamos que usas utf-8)

Código Apache:
Ver original
  1. AddCharset utf-8 .html .php

Y si no sí, ir a soluciones más personalizadas.
En cuanto al pageSpeed, hace rato que no le doy mucha importancia, es que para Goolge, parece que si no cacheas todo durante un año, no es suficiente, o te advierte que tenes que unificar los css, y si lo haces te advierte que hay reglas sin usar...



Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 25/10/2011, 11:16
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 1 mes
Puntos: 140
Respuesta: Redirección 301 en .htaccess

Si, la verdad es que en ese tema estuve probando varias cosas hasta dar con una solución, y mi baja experiencia no ayudó mucho. Lo del pagespeed, bueno, fue uno de mis primeros pasos de optimización (bastante inútil en muchas cosas, aunque me sirvió para algo importante: aprender), antes de decidir tirarme al php, y de descubrir el seo (hace 3 meses tenía la web maquetada con tablas y tenía sólo una ligera idea de lo que eran las palabras clave, básicamente que era aquello que ponía en el metatag keywords...).

Gracias de nuevo por tu comentario, volveré a hechar un ojo a ver si saco algo bueno!

Etiquetas: htaccess, redireccion-301
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 11:32.