Как я могу перенаправить запросы с Rails на поддомен PHP?
-
21-09-2019 - |
Вопрос
У меня есть сайт, скажем, example.com, написанный на PHP.Я конвертирую его в Rails, но есть выпуски за три года (например, выпуски журналов), которые я не хочу обновлять.К счастью, похоже, я выбрал выгодный формат URL, т.е.все вопросы начинаются с двух цифр, затем в большинстве случаев имя файла
example.com/00/имя-автора/index.php
example.com/19/имя-автора.php
Я хочу перенаправить через 301 все запросы к этим файлам php на
archive.example.com
И сделайте сайт example.com верхнего уровня сайтом Rails, на котором будут публиковаться последние выпуски.~/20/имя автора
Субдомен находится на Dreamhost, а верхний уровень перейдет к Heroku.(Так что это не часть вопроса.) Спасибо.
Решение 2
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
Другие советы
Взгляните на следующие ответы:
Этот метод является самым простым и имеет дополнительный бонус в виде отправки заголовка 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 (или любую другую поисковую систему) об изменении.Это позволит Google мгновенно обновить свой индекс.