Redirija el contenido antiguo (.html / .php, etc.) a Ruby on Rails

Cambié a Ruby on Rails y mi problema actual es redirigir los contenidos anteriores como XXX/dummy.html o XXX/dummy.php en RoR.

¿Cuál es exactamente la mejor solución para

  1. contenido aislado ( XXX/onlyinstance.html )
  2. contenido que tiene una estructura interna como XXX/dummy1.html , XXX/dummy2.html

http://guides.rubyonrails.org/routing.html no explica cómo migrar contenido antiguo.

Nota: Cambiar los enlaces antiguos NO es una opción. El sitio web está alojado, no es mi propio servidor. Como el dominio no ha cambiado, la solución para redirigirlo parece ser innecesaria … debería haber una solución mejor.

EDITAR: He descubierto que la mejor solución es, de hecho, redirigirla por la forma en que se describe weppos.

Así que agrega un archivo .htaccess en el directorio público y escribe

RewriteEngine en
Redirigir permanente /XXX.php http: // XYZ / XXX

Por alguna razón, RoR no aceptó volver a enrutar en routes.rb … mientras que .html / .xml todo va bien, .php no funciona. No he descubierto por qué. Debido a que la respuesta de weppos fue la mejor, le otorgaré una recompensa de 50 puntos, pero como las otras respuestas también son válidas, las renunciaré. Gracias a todos

Puedes hacer esto de múltiples maneras.

La mejor y más eficiente manera es usar su servidor web front-end. Puede configurar fácilmente algunas configuraciones para redirigir todas las URL antiguas a las nuevas.

Con Apache, puedes usar mod_alias y mod_rewrite .

 Redirect /XXX/onlyinstance.html /new/path RedirectMatch ˆ/XXX/dummy([\d])+\.html$ /new/path/$1 

Esta es la forma más eficiente tanto para el servidor como para el cliente porque se maneja a nivel de servidor sin la necesidad de inicializar el intérprete de Ruby.

Si no puede / no quiere aprovechar la configuración del servidor, puede decidir utilizar Rails. Hablando de rendimiento, la forma más eficiente es usar un middleware Rack que es mucho más eficiente que crear un controlador / acción completo.

 class Redirector def self.call(env) if env["PATH_INFO"] =~ %r{XXX/onlyinstance\.html} [301, {"Content-Type" => "text/html", "Location" => "http://host/new/path/"}, "Redirecting"] else [404, {"Content-Type" => "text/html"}, "Not Found"] end end end 

También hay un complemento Rack llamado Redirect que proporciona un buen DLS para configurar redirecciones usando un middleware Rack.

Solo una nota al pie. No routes.rb rutas adicionales utilizando routes.rb porque terminará duplicando las URL de su sitio y desperdiciando memoria adicional.

Consulte también Redirigir solicitudes que no sean www a www urls en Rails

¿Qué quieres decir con migrar? Recomiendo redirigir a los clientes para usar las URL de RoR. Esto se puede hacer usando códigos de estado HTTP 301. Ver http://en.wikipedia.org/wiki/HTTP_301 :

El código de estado de respuesta HTTP 301 Movido permanentemente se usa para la redirección permanente.

Esto se puede hacer en la configuración de su servidor HTTP.

Debe redefinir su aplicación, ya que Rails usa el enrutamiento RESTful (como probablemente haya leído). Entonces, para tener un archivo php que maneje mostrar, crear, destruir, etc. de artículos, necesita construir un ítem Modelo, Controlador y vistas para las diferentes acciones.

Los archivos HTML estáticos que puede copiar en el directorio público, ya que es el mismo. La estructura que usaste puede seguir siendo la misma.

Para modificar su enrutamiento, debe agregar map.resource a su archivo config / routes.rb. Esto implementa las rutas RESTful a su controlador. Para comenzar, use el servidor web provisto por Rails (WEBrick), ingresando el comando script/server . Más adelante, cuando tengas más experiencia, podrías pensar en cambiar a otro servidor si WEBrick no es suficiente.

Te sugiero que comiences a escribir una aplicación básica (blog) con Rails primero, mira aquí . Entonces, puedes ver qué partes usa Rails y cómo puedes usarlas.

Luego podrá identificar estas partes en su solución de PHP y será mejor capaz de convertir sus páginas. Al menos seguí este enfoque cuando comencé a usar / convertir a Rails desde PHP.