Этот вопрос был задан достаточно широко по всему Интернету и в SO. - Доступные ответы затенены конкретными подробностями о каждой конкретной установке. Надеюсь, этот вопрос поможет всем, в том числе и мне, понять это лучше.
Мой вопрос: «Как нам настроить файл Apache .conf для обработки нескольких доменов?»
(Я знаю, что ответ "зависит". Надеюсь, 80% людей сначала будут иметь базовую настройку, а потом усложняют ее.) Надеюсь, это хорошее предположение.
Я сравниваю установку Magento с Wordpress. Под Wordpress, «лучший способ» установить его - это поместить все ядро в папку / wordpress. Затем, используя правила переписывания Apache и постоянные ссылки, замаскируйте папку / wordpress. В многодоменной ситуации ядро Wordpress умело обрабатывает весь процесс для вас без особой модификации файлов .htaccess. Кроме того, какие бы изменения не требовались, Wordpress может сделать это за вас - или плагин. Черт возьми, я бы хотел, чтобы Magento был так же прост в установке, как Wordpress. Но это не так. (Пока!)
Под Magento термин «магазин» вводит в заблуждение, когда мы думаем об URL. Так что давайте пока проигнорируем это и просто позаботимся о самом низком уровне - «Представлении магазина». В моем случае у меня есть следующее:
Main Web Site -> Main Web Site Store -> Default Store View
www.site1.com -> Main Store -> site1_english
www.site2.com -> Main Store -> site2_english
- Первый столбец - это домен.
- Второй столбец магазина -
вводящее в заблуждение название для этого обсуждения.
- Последний столбец - «Просмотр магазина».
Что касается того, где физически размещать файлы. Большинство людей, включая меня, хотят оставить ядро Magento в покое. Без изменений вообще. Поэтому мы помещаем это в корень htdocs следующим образом:
/var/www/html/magento
Я думаю, это все сбивают с толку. Дистрибутивы Linux не согласуются с тем, где это место И что еще хуже, многие люди пытаются сделать это на экономичной учетной записи хостинга. Я сам использую EC2. Игнорируя все это ... Вставьте / magento в корень вашего документа. Следующее, что вы можете добавить, это папка / wordpress. Ура. Сделай это позже.
В моем конфиге apache он настроен так:
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/html/magento
<Directory /var/www/html/magento/>
AllowOverride All
</Directory>
# Other directives here
SetEnv MAGE_RUN_CODE "site1"
SetEnv MAGE_RUN_TYPE "website"
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot /var/www/html/magento
<Directory /var/www/html/magento/>
AllowOverride All
</Directory>
# Other directives here
SetEnv MAGE_RUN_CODE "base"
SetEnv MAGE_RUN_TYPE "site2_en"
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/nowhere
</VirtualHost>
В папке / nowhere есть файл index.html, в котором написано «нет, где».
Ситуация, которую я вижу, такова:
- Перейдите на www.site1.com -> Magento перенаправляет в представление хранилища по умолчанию (на IP-адрес)
- Перейдите на www.site2.com -> Magento перенаправляет в представление хранилища по умолчанию (на IP-адрес)
- Перейдите к IP-адресу моего сервера -> Magento отобразит представление магазина по умолчанию
Базовый URL-адрес представления магазина по умолчанию: http://my.ip.add.ress
Вот мои вопросы:
- Что мы должны поместить в MAGE_RUN_CODE и MAGE_RUN_TYPE? Некоторые сайты говорят «сайт», некоторые говорят «магазин». Что должно быть там?
- Почему я никогда не попадаю на мой нигде сайт?
- Почему www.site1.com продолжает перенаправлять в представление магазина по умолчанию?
В некоторых документах говорится о создании выделенной папки или копировании в index.php или .htaccess. Или сделать наш собственный .htaccess. В этой статье я выбрал конфигурационный файл Apache.
Почему это не сработает?