Apache - переписать поддомен в местоположение? - PullRequest
0 голосов
/ 09 ноября 2011

Извините, я часами пытался заставить это работать, но я не добился прогресса ...

Я хочу сделать так, чтобы, если пользователь на моем сайте набрал user.site.comони будут приняты к site.com/user, но URL все равно будет показывать user.site.com.Как я могу это сделать?С .htaccess?Серверные файлы?

Ответы [ 3 ]

1 голос
/ 09 ноября 2011

Почти там Кен

RewriteEngine On

RewriteCond %{HTTP_HOST} !www.site.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9-_]+).site.com [NC]
RewriteRule (.*) %1/$1 [QSA,L]

% 1 = то, что раньше .site.com

$ 1 = то, что вы получили после /

Если у вас есть test.site.com / foo.php, у вас будет /test/foo.php.если вы просто хотите проверить, просто забудьте о $ 1.

QSA = строка запроса append, L = Last.

Вы должны прочитать URL о mod_rewrite в посте @phihag.

1 голос
/ 09 ноября 2011

Используйте mod_rewrite:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.site.com$ [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9-_]+).site.com [NC]
RewriteRule (.*) %1/$1 [QSA,L]

Если вы хотите создать ссылку на ресурсы, используйте полные (http://site.com/user/static/x.css) или относительные (static/x.css) URL-адреса.Абсолютные URL-адреса (/user/static/x.css) должны быть созданы по-разному, когда действует это правило.

0 голосов
/ 11 ноября 2011

Чтобы сохранить оригинальный адрес в адресной строке, вам понадобится обратный прокси, а не перенаправление.Редирект указывает браузеру отправить второй запрос на сервер с другим адресом, обратный прокси-сервер сообщает серверу найти другую страницу и отправить ее, не уведомляя об этом браузер (это то, во что вы хотите, я полагаю).Обратный прокси-сервер достигается с помощью флага [P] в mod_rewite

Убедитесь, что mod_rewrite, mod_proxy и mod_proxy_http загружены и поместите директивы

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

RewriteEngine on

RewriteRule ^/(.*) http://site.com/user/$1 [PL]

в ваш виртуальный хостКонфигурация для user.site.com или .htaccess, если у вас нет привилегий root.Это будет прокси все страницы из субдомена в основной папке домена.Если вы хотите использовать прокси только для индексной страницы, используйте RewriteRule ^/ http://site.com/user.

Я предполагаю, что вы используете http, а не https.Если так, это становится немного более сложным ...

...