#ruby-on-rails #.htaccess #mod-rewrite #seo #heroku
#ruby-on-rails #.htaccess #мод-перезапись #seo #heroku
Вопрос:
У меня есть приложение Rails, размещенное на Heroku, серверы которого генерируют страницы для маркетинговых / seo-целей. У меня есть другие страницы контента на другом сервере, которые являются статическими страницами. Я хочу сохранить их оба в одном домене, чтобы повысить эффективность seo в этом домене.
пример:
domain.com/blah-blah-blah-something
на самом деле должна загружаться страница из heroku-server-name / бла-бла-бла-что-то, но похоже, что это из domain.com .
Возможно?
Ответ №1:
Вы можете запустить сайт с помощью HAProxy и настроить его для переключения контента. Для этого у вас есть интерфейс, который прослушивает некоторый внутренний IP-адрес, сопоставленный вашему внешнему IP. Серверные части — это ваши серверы. Вы настраиваете списки контроля доступа, чтобы определить, на какой серверный сервер отправлять. Например, это может быть с помощью некоторого имени пути или расширения файла (например, .html отправляется на сервер A, а .aspx — на другой). В итоге пользователь понятия не имеет, что они находятся на двух разных серверах, потому что они видят, что сайт обслуживается только на одном доменном имени.
Примечание:
1) Вы не сможете совместно использовать сеансы (о чем, я уверен, вы уже знаете).
2) HAProxy не обрабатывает https, поэтому, если вам нужен https, вам нужно что-то для обработки завершения https, например, nginx, haproxy или stunnel.
Надеюсь, это применимо, потому что я не знаком с heroku.
Ответ №2:
DNS-запись для домена может указывать только на один IP-адрес (и, следовательно, на сервер). Вы могли бы настроить свое приложение на базе heroku для отображения контента с другого сервера, эффективно извлекая сайт и отображая его.
Я позаимствовал этот фрагмент кода по этой ссылке:
def fetch_url(url)
r = Net::HTTP.get_response( URI.parse( url ) )
if r.is_a? Net::HTTPSuccess
r.body
else
nil
end
end
# use like this from your controller
@snippet = fetch_url "http://www.oreilly.com/"
# and in your page <%= @snippet %>
Любой подобный запрос, скорее всего, будет выполняться с низкой производительностью, поскольку на выполнение двух запросов фактически уйдет время.