我有一个网站,比如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。 (所以这不是问题的一部分。)谢谢。
答案 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(或任何搜索引擎)此更改。这将使谷歌立即更新它的索引。