如何将Rails中的请求重定向到PHP子域?

时间:2010-01-20 11:29:41

标签: ruby-on-rails routing rails-routing

我有一个网站,比如example.com,这是PHP。我正在将它转换为Rails,但是有三年的问题(比如杂志问题)我不想更新。值得庆幸的是,我似乎选择了一种有利的url格式,即。所有问题都以两位数开头,大多数情况下都是文件名

  

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

我想通过301将这些php文件的所有请求重定向到

  

archive.example.com

让顶级example.com成为Rails网站,提供最新问题..~ / 20 / author-name

子域名在dreamhost上,顶级域名将转到heroku。 (所以这不是问题的一部分。)谢谢。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分: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

对于任何进入域/ 00到域/ 19的请求,我在控制器中重定向

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

答案 2 :(得分:0)

此方法最简单,并且发送301标头还有额外的好处。这对提高你的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");
}
?>

确保在脚本或引导程序的最开头有此代码

使用此方法,您不仅可以重定向您的受众,同时还可以通知Google(或任何搜索引擎)此更改。这将使谷歌立即更新它的索引。