2010-01-20 5 views
2

J'ai un site, disons example.com, qui est PHP. Je le convertis en Rails, mais il y a trois années de problèmes (comme les magazines) que je ne veux pas mettre à jour. Heureusement, il semble que j'ai choisi un format d'URL avantageux, à savoir. toutes les questions commencent par deux chiffres, le nom du fichier dans la plupart des casComment puis-je rediriger les demandes de Rails vers un sous-domaine PHP?

example.com/00/author-name/index.php
example.com/19/author-name.php

Je veux rediriger via 301 toutes les demandes de ces fichiers php à

archive.example.com

Et faites du site de haut niveau example.com un site Rails, qui traite les derniers problèmes. ~/20/author-name

Le sous-domaine est sur dreamhost, et le niveau supérieur ira à heroku. (Donc cela ne fait pas partie de la question.) Merci.

Répondre

1
ActionController::Routing::Routes.draw do |map| 

    map.connect '20/:name', :controller => :twenty, :action => :show 
    map.resources :twenty, :as => '20', :only => [:index, :show] 

    map.connect ':url', :controller => :archive, :action => :show, 
        :requirements => { :url => /(([0-1]){1}([0-9]){1})(.*)/ } 

    map.root :controller => :pages, :action => :cover 

    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
end 

Pour toute demande venant au domaine/00 au domaine/19 rediriger dans le contrôleur

redirect_to "http://archive.example.com/#{params[:url]}", :status => 301 
0

Cette méthode est la plus facile et avec l'avantage supplémentaire d'envoyer un en-tête 301. C'est vraiment bon pour améliorer votre classement SEO !!!

<?php 
$uri = $_SERVER['REQUEST_URI']; // Gets the user's current URI 
$redirect = array("/00/author-name/index.php", "/19/author-name.php"); //Define your 301 redirect uri 

// Here's the meet and greet of your problem: 
if (in_array($uri, $redirect)) { 
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: archive.example.com"); 
} 
?> 

Assurez-vous d'avoir ce code au début de votre script ou bootstrap

Avec cette méthode, vous redirigez non seulement votre public et en même temps, vous vous avisez google (ou quel que soit le moteur de recherche) du changement. Cela fera google mettre à jour son index en un rien de temps.

Questions connexes