Переадресация субдомена в подпапку и сохранение правил подпапки - PullRequest
2 голосов
/ 14 сентября 2011

У меня есть стандартная настройка LAMP, и я пытаюсь заставить субдомены автоматически работать, пока существует папка с соответствующим именем.

Если вы знакомы с сервисом общего хостинга MediaTemple GridServer, япытаясь эмулировать способ обработки субдоменов с подстановочными знаками:

  • Если запрашивается subdomain.domain.com, найдите папку с именем subdomain.domain.com
    • Если папка найдена,позвоните ему домой и обслуживайте сайт внутри него, подчиняясь любым файлам .htaccess, которые могут быть там.
    • Если папка не найдена, просто отобразите domain.com

Мне сказали, что .htaccess mod_rewrite в моем корневом домене - это путь, и я смог обнаружить поддомен и, по крайней мере, указать на соответствующую подпапку, но я не думаю, что это оставляетлюбая возможность для собственного mod_rewrite файла subdomain.domain.com .htaccess вступить во владение, как только сервер узнает, где находится папка субдомена.

Вот мой .htaccess для этого:

RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9-]+)\.domain.com$
RewriteRule ^(.+) /vhosts/%1.domain.com/html/pages/$1.php [L,QSA]

... И структура моей папки:

domain.com
    html
        .htaccess
        vhosts
            subdomain.domain.com
                html
                    .htaccess
                    pages
                        index.php
                        pagename.php

Итак, как вы можете видеть, сайт внутри поддоменов.Чтобы функционировать, domain.com зависит от своего собственного mod_rewrite, поскольку файлы подкачки находятся не там, где их ожидает сервер.

Теперь я знаю, что, возможно, я могу включить правила .htaccess поддоменов в мой корневой домен..htaccess с соответствующими условиями, но главное, что мне нужно иметь возможность указывать совершенно разные доменные имена и на эти субдомены (поэтому субдомен доступен через subdomain.domain.com и mydomain.com), поэтому эти subdomain.domainПапки .com должны быть полностью самодостаточными.

Итак, как я могу заставить мой сервер искать правильное местоположение папки субдомена, в то же время позволяя его собственным .htaccess mod_rewrites работать?

Любая помощь очень ценится!


Просто кто-то предположил, что mod_rewrites - это неправильный путь, а mod_vhs - это то, что яхочу использовать.Кто-нибудь знает про mod_vhs?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Я получил его на работу с помощью VirtualHosts:

NameVirtualHost *

# Root domain homepage
<VirtualHost *>
    DocumentRoot /var/www/domain.com/html
    ServerName domain.com
    ServerAlias www.domain.com
</VirtualHost>

# Hosted sites
<VirtualHost *>
    VirtualDocumentRoot /var/www/vhosts/%0/html
    ServerName *
    ServerAlias *
</VirtualHost>

Первая запись перехватывает запросы на моей домашней странице и обслуживает стандартный сайт, а вторая перехватывает ВСЕ остальное и направляет в другое местоположение на основе запрошенного имени хоста.

1 голос
/ 14 сентября 2011

Легко. Просто убедитесь, что поддомен зарегистрирован в DNS вашего сервера, а затем укажите для него htaccess, например:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [OR] 
RewriteCond %{HTTP_HOST} ^(www\.)?sub\.domain\.com
RewriteRule .* /subfolder [L]

Нет необходимости связываться с htaccess подпапки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...