2015-09-09 1 views
0

У меня есть googled весь день, и я не могу получить это право. У меня есть следующее правило в моем файле .htaccess:Поддомен указывает на подпапку (БЕЗ ПРЯМОГО)

RewriteEngine on 
RewriteBase/
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ 
RewriteCond %{HTTP_HOST} !^app\.domain\.com$ [NC] 
RewriteRule ^(.*)$ http://app.domain.com/site/%1/$1 [L] 

Что делает этот код выглядит следующим образом

визит: subsite.domain.com/contact-us Это перенаправит вас app.domain.com/site/subsite/contact-us

Это то, что я хочу, но я не хочу фактический редирект. Поэтому, когда я просматриваю этот «дочерний сайт», я всегда хочу иметь subsite.domain.com/[something ...]

Я читал, что удаление доменного имени из RewriteRule будет исправлено. Но это не работает ...

Возможно ли это только с правилами htaccess?

+0

У меня есть управляемый сервер, поэтому у меня есть контроль над всем, что я предполагаю? Важно, чтобы это было динамично. Я больше всего могу создать новый «дочерний сайт» без параметров редактирования на сервере или htaccess. – lindesvard

+0

ОК, тогда как вы создали дочерний сайт? Можете ли вы показать, что это 'VirtualHost' запись? – anubhava

+0

О, нет, ты пропустил меня. Мой сайт позволяет пользователям создавать свой собственный (основной) сайт с помощью php и mysql. Таким образом, страницы - это просто чистый текст. Если вы посетите http://app.domain.com/site/username/constact-us, он будет искать в базе данных, если это имя пользователя будет завершено. – lindesvard

ответ

1

Таким образом, единственное решение этой проблемы, чтобы добавить новое для каждого поддомена в файле vhost?

Это не совсем точно.

Вы можете создать поддомены подстановочных знаков, чтобы любой субдомен принимался. В DNS для вашего доменного имени добавить поддомен под названием *.

*.example.com 192.168.1.1 

Затем в апача файл ВХост ниже ServerName добавить новую serveralias линию или добавить его в существующую serveralias.

ServerAlias *.domain.com 

Затем в файле .htaccess попробуйте использовать прокси с помощью P flag, потому что вы не можете использовать другое доменное имя в переписывании или он будет делать редирект, как вы выяснили. Убедитесь, что mod_proxy включен в apache. Обычно это так. Затем ваше приложение может обрабатывать запрошенные папки.

RewriteEngine on 
RewriteBase/
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ 
RewriteCond %{HTTP_HOST} !^app\.domain\.com$ [NC] 
RewriteRule ^(.*)$ http://app.domain.com/site/%1/$1 [P] 
+0

Попробует завтра! – lindesvard

+0

Если вы используете cPanel, вы можете создать подстановочный whost, добавив поддомен с *, затем укажите поддомен в папку по вашему выбору. –

+0

@ lindesvard, как это сработало для вас? –

Смежные вопросы