Правильно ли перенаправлены мои старые веб-сайты?

Примерно год назад я объединил три веб-сайта (oldsite.com, oldsite.nu, newsite.se) в один, который я сохранил на одном из доменов (newsite.se). Я не уверен, что это было сделано правильно, так как я все еще вижу много трафика от Google для старого url: s, даже через год.

Код перенаправления Oldsite


Важное примечание по редактированию: недавно я понял, что серверы имен больше не указывали на мое старое приложение rails, а вместо этого на php-папку на моем веб-хосте, в котором у меня есть .htaccess со следующим кодом:

RewriteEngine on
RewriteRule ^robots.txt - [L]
RewriteRule ^sitemap.xml - [L]
RewriteRule ^(.*)$ http://www.newsite.se/$1 [R=301,L]

Это делает этот раздел ниже (относительно oldsite.com/oldsite.nu) void:.com и .nu были построены в Ruby on Rails и размещены на Heroku.

Логика перенаправления путей из oldsite.com/oldsite.nu была сделана полностью на сайте newsite.se. Код перенаправления на oldsites - это прямое перенаправление с этим в первом ряду в routes.rb на oldsite.com:

  match "/(*path)" => redirect {|params, req| "http://www.newsite.se/#{params[:path]}"},  via: [:get, :post]

Я использовал этот (шведский) инструмент, чтобы проверить, действительно ли это перенаправление перенаправляет 301: http://301redirect.se. Он подтвердил, что перераспределение было 301.

Обработчик перенаправления Newsite.se

Содержимое на каждом старом веб-сайте было сопоставлено с тем же контентом на новом, довольно редко на одном и том же пути, например.

oldsite.com/categories/vacation/item/1243

может привести к

newsite.se/product-items/1243

Я обрабатываю эти типы перенаправления главным образом во внутреннем контроллере перенаправления, который ловит и перенаправляет любой трафик на newsite.se, например:

newsite.se/categories/vacation/item/1243 -> newsite.se/product-items/1243

используя это внизу на моих newsite.se routes.rb:

match '*not_found_path', :to => 'redirections#not_found_catcher', via: :get, as: :redirect_catcher, :constraints => lambda{|req| req.path !~ /\.(png|gif|jpg|txt|js|css)$/ }

Это отлично работает.

Изменить 20151223: Причина, по которой я использую Newsite.se для обработки перенаправления, заключается в том, что она содержит всю логику перенаправления путей. Это невозможно для Oldsite.com/.nu.

Выполненные действия

Вне перенаправления с 301 (насколько я понимаю, я это делаю). Я также использовал Инструменты Google для веб-мастеров, чтобы сделать "Запрос на изменение адреса" с моих старых двух веб-сайтов на новый. Я не могу найти никакой информации об этом дольше, но я уверен, что получил положительный ответ от WMT, который был сделан (но я не уверен на 100%).

Индикация проблемы

Я не на 100% уверен, что что-то не так, но я видел показания, которые заставляют меня думать, что перенаправление сделано неправильно, чтобы Google действительно понимал, что веб-сайты не перемещены.

  • В Инструментах Google для веб-мастеров и "Входящие ссылки" домен верхнего уровня - это herokuapp.com, который в терминах означает oldsite.com. То есть 301 перенаправление, по-видимому, интерпретируется как ссылки (а не как перенаправления).
  • Я часто получаю новые указания в Google WMT о "Not founds/404's" (не знаю, что этот раздел вызывается в английской версии) для URL-адреса, который не может быть достигнут на newsite.se. Когда я проверяю источник этого URL-адреса, я часто вижу ссылки, например. oldsite.nu/oldpath/productitem/1234 - как кто-то (Google?) все еще получил доступ к этому старому URL-адресу. Важной частью этого является то, что у меня НЕ было так много ссылок на старые сайты, поэтому я не ожидаю, что это будут старые ссылки, все еще питающие трафик.
  • Я все еще получаю трафик на многие из моих старых путей (от oldsite.com/oldsite.new). Я нахожу это через свой контроллер перенаправления, который каждый день обрабатывает множество запросов по старым путям.
  • Веб-сайт потерял много позиций в Google SERP, это лишь слабый признак, хотя его могут быть многочисленные причины.

Решение проблемы

  • Как мне решить проблему с этой проблемой?
  • Нормально ли для WMT рассматривать 301 как ссылки?
  • Есть ли более разумный способ обработки перенаправления с сайта oldsite.com, чем моя строка маршрутов route.rb?

Ответ 1

Мне пришлось сделать аналогичный шаг для клиента, перемещающего большой сайт электронной коммерции, который потребовал переход всего старого трафика на новый веб-сайт и перенаправление соответствующих продуктов на новый путь.

Чтобы все перешло, чтобы мы не потеряли рейтинг Google, нам пришлось реализовать 301 редирект, как вы упомянули выше. В WMT они, похоже, полагаются на вас, чтобы справиться с этим, вместо того, чтобы использовать его как поддерживаемую функцию.

Подход

Вы должны перенаправить каждый URL-адрес своего старого домена на соответствующий новый URL. Это документированный и рекомендуемый способ домена в соответствии с Google.

Лучшим подходом было бы обработать переадресации в контроллере и иметь логику для отправки на фактическую страницу с 301 и больше не перенаправлять после приземления на новый веб-сайт.

Я бы предложил следующее:

routes.rb (oldsite.com/oldsite.nu)

Сопоставьте запрос и отправьте его контроллеру для обработки более тонкой логики и 301.

match "/(*path)", to: 'redirector#catch_all',  via: [:get, :post]

RedirectorController (oldsite.com/oldsite.nu)

def catch_all
    # Separate the rest of the link into its components
    # I will use the example of the vacation -> product-items you have
    options = params[:path].split('/')
    options.reject! { |e| e.to_s.empty? } # Remove trailing junk if any
    if options[0] == 'categories'
        redirect_to "http://www.newsite.se/product-items/#{options.last}", notice: 'Product Updated! We Have A New Site.', status: 301
        return # the return here is a MUST for more complex if-then and multiple redirect_to's
    elsif options[0] == 'contact'
        redirect_to "http://www.newsite.se/contact-us", notice: 'We moved, Contact us Here.', status: 301
        return
    elsif options.empty? || options.blank?
        redirect_to "http://www.newsite.se/", notice: 'That page no longer exists, Please browse our new site', status: 301
        return
    else
        more_sorting(options)
    end
end

private

def more_sorting(options)
    case options
    when options[2].....
        redirect_to ....., notice: '', status: 301
        return
    when options[3].....
        redirect_to ....., notice: '', status: 301
        return
    when options[4].....
        redirect_to ....., notice: '', status: 301
        return
    end
end

Почему так:

Это заставит роботы поисковых систем, и пользователи все равно смогут сканировать и посещать каждую страницу и ссылаться и перенаправляться на определенную страницу, с которой она связана на новом веб-сайте.

Далее он обрабатывает 301 переадресацию на этом сервере и не приводит к другому перенаправлению на новом сервере. Что-то, за что вы можете быть оштрафованы как от пользователя, так и от пользовательского опыта, а также от интерпретации робота, вы пытаетесь объединить сайты. (это также, скорее всего, устранит интерпретацию ссылки 301)

Если вам нужна более сложная маршрутизация, вы можете добавить (как я должен был) частные функции в RedirectController для более глубокого анализа параметров, которые у меня были как последние else в if, тогда.

Разъяснение?

Сообщите мне, если у вас есть другие вопросы, и если это поможет.