Назад | Перейти на главную страницу

ExpressionEngine, mod_rewrite и поддомены

Всем заранее спасибо; это круто.

Мне было поручено перенести поддомен, который ранее размещался на собственном сервере, в существующую установку 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