В настоящее время я работаю над сайтом, который размещен на двух разных серверах. На одном сервере размещен основной сайт (example.co.uk), на другом - приложение электронной коммерции (Magento), которое в настоящее время доступно по адресу shop.example.co.uk.
У меня есть полный доступ к серверу, на котором размещен сайт электронной торговли, и полный доступ к конфигурации домена; однако основной сайт размещен на виртуальном хостинге, и единственный доступ, который у меня есть, - через FTP.
Можно ли в этой настройке сделать так, чтобы сайт электронной торговли был доступен через example.co.uk/shop и только по этому URL-адресу, не перемещая приложение электронной коммерции на общий хостинг? Мы хотим, чтобы доступ был только из подкаталога (по причинам SEO), поэтому ввод домена shop.example.co.uk должен перенаправлять на example.co.uk/shop.
В настоящее время я пытаюсь выяснить, доступен ли mod_proxy на общем хосте, хотя это кажется маловероятным. Это будет единственный способ сделать это?
РЕДАКТИРОВАТЬ: Спасибо за все ответы. Чтобы немного объяснить причину, это для клиента, который хочет самостоятельно разместить основной сайт, поскольку он разрабатывается и управляется отдельной компанией.
mod_proxy
действительно самое жизнеспособное решение что я могу думать в данный момент, если вы хотите, чтобы эти сайты были физически разделены. В основном это пример из учебника для RewriteRule
с [P]
флаг:
Given Rule Resulting Substitution
---------------------------------------------- ----------------------------------
^/somepath(.*) http://otherhost/otherpath$1 [P] http://otherhost/otherpath/pathinfo
via internal proxy
Так как Ричард упомянутый слияние эти два сайта физически вместе, вы можете избежать создания ненужных проблем в пути, и в этом случае, вероятно, он будет лучше служить в долгосрочной перспективе.
Хотя у меня была какая-то странная идея - если mod_proxy
поддержка - это проблема, и вы ничего не можете с этим поделать на своих общих хостах, тогда почему бы не поменять роли?
Сделаем ваш сервер электронной коммерции главный сервер, обслуживающий весь контент под example.co.uk через прокси на ваш общий хост (теперь используется другое фиктивное доменное имя, например site.example.co.uk) и example.co.uk/shop прямо. Затем перенаправьте весь трафик без прокси site.example.co.uk к example.co.uk.
Однако остается вопрос - зачем это вообще? Если вы зашли так далеко, просто переместите весь сайт в сервер электронной коммерции было бы самым разумным. Особенно в том случае, если вы можете столкнуться с некоторыми ограничениями ресурсов на сервер электронной коммерции. Плюс добавление некоторой задержки прокси - все это кажется действительно ненужным. Единственная ситуация, в которой я могу придумать, где это было бы полезно, - это если у вас есть очень выделенная среда / набор инструментов, установленный на вашем общем хосте, который трудно воспроизвести на вашем текущем сервер электронной коммерции. Но, честно говоря, я сомневаюсь, что это так.
Пожалуйста, поясните подробнее, в чем вы обосновываете необходимость разделения этих сайтов. Может быть, мы сможем найти лучшее решение, отвечающее вашим основным потребностям.
К сожалению, нет простого способа добиться этого, метод domain.com/shop предполагает, что / shop - это локальная папка, а не удаленная папка. Вы можете использовать несколько методов .htaccess для перенаправления клиентов или для маскировки URL-адреса, но это, скорее всего, вызовет у вас больше проблем с точки зрения оптимизации поисковых систем. Есть ли особая причина, по которой вы не можете объединить два сервера вместе, чтобы использовать желаемый формат URL?
Если два сервера находятся в одной сети, вы можете рассмотреть возможность соединения iscsi / nfs между ними обоими, что позволит удаленной папке стать «локальной» папкой (символическая ссылка).
Если вы готовы пройти через боль модификации своей установки Magento, то да, вы можете это сделать
вам нужно будет пройти через config / базу данных magento и обновить любую ссылку shop.example.com на example.com/shop (вам нужно будет сделать это, если вы хотите использовать 301 редирект с shop.example.com)
таким образом вы можете затем переместить его в подкаталог, а затем переместить свой основной сайт в основной каталог и импортировать весь этот сайт (вам придется сделать это, если вы не можете использовать обратный прокси-сервер, что я сомневаюсь, что общий хост сделает за вас)
как только это все будет сделано, вы можете просто создать стандартное перенаправление 301 с shop.example.com на example.com/shop
также не забывайте, если у вас нет подстановочного ssl или ssl для домена и субдомена, вам понадобится новый сертификат ssl
Если у вас есть mod_proxy
доступны на вашем виртуальном хостинге вместе с mod_rewrite
вы можете использовать что-то вроде:
RewriteEngine On
RewriteRule ^shop/(.*)$ http://shop.example.co.uk/$1 [P]
[P]
флаг прокси, который требует mod_proxy
, который должен разрешите вашему сайту электронной коммерции функционировать как есть (я не знаком с Magento), поскольку запросы, получаемые этим сервером, должны быть такими же, как и раньше.
Однако это не мешает доступу http://shop.example.co.uk напрямую, к которому вы, вероятно, тоже захотите обратиться.
Надеюсь, это поможет.