Всем заранее спасибо; это круто.
Мне было поручено перенести поддомен, который ранее размещался на собственном сервере, в существующую установку ExpressionEngine.
Раньше рассматриваемый сайт находился по адресу franchise.domain.com - теперь данные (или, по крайней мере, группы / шаблоны ExpressionEngine) находятся по адресу www.domain.com/franchise.
Вопрос: учитывая отсутствие у меня доступа к httpd (что, как я полагаю, может быть полезно), и учитывая мой доступ к файлу .htaccess, как мне указать franchise.domain.com на www.domain.com/franchise в моде? это прозрачно для конечного пользователя?
Дополнительная загвоздка: тот же самый файл .htaccess также используется, чтобы скрыть /index.php/, который требуется ExpressionEngine для выполнения своих безумных процедур с базой данных.
Другими словами, вот что мне нужно:
Пользователь видит: franchise.domain.com/whatever Сервер видит: www.domain.com/index.php/franchise/whatever
Я сам работал над этим последние пару дней, просматривая Google и EE Docs, форумы и Wiki, и, к сожалению, это чрезвычайно чувствительный ко времени проект - наш долгосрочный доход поступает от продажи наших франшиз. .
Кто-нибудь может помочь?
Соответствующие строки из .htaccess следующие:
#Temporarily redirect franchise.domain.com to domain.com/franchise,
#just so we have SOMETHING up
RewriteEngine On
RewriteCond %{HTTP_HOST} franchise.domain.com
RewriteRule ^(.*)$ http://www.domain.com/franchise/$1 [R,L]
#Rewrites domain.com to http://www.domain.com, may be interfering
#with my attempts, but I'm not sure.
RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
#Removes /index.php/ from EE urls
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
К сожалению, мне не удалось сделать этот первый набор директив прозрачным для конечного пользователя ... я понимаю, что он включает в себя определенное количество вуду, которое мне не по силам. (Что-то о добавлении хеша или маркера, чтобы Apache не перенаправлял бесконечно).
Еще раз спасибо всем.
Вам нужно использовать mod_proxy
либо в конфигурации обратного прокси, либо в качестве перенаправления с [P]
параметр в RewriteRule
. Видеть: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html