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

Apache vhosts - как маршрутизировать множество сайтов в одну сторону, а сайт разработки - по-другому?

127.0.0.1 developmentsite.com
127.0.0.1 blockeddomain1.com
127.0.0.1 blockeddomain2.com

Я хотел бы заблокировать 2 последних домена (и еще несколько). Для этого я добавил следующую запись vhost:

<VirtualHost *:80>
    DocumentRoot "/sites/blocked"
    <Directory /sites/blocked>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Это нормально работает. Но теперь я хочу, чтобы первый домен был перенаправлен на обслуживаемый мной сайт (работающий на XAMPP). Это работает для маршрутизации ВСЕХ доменов на мой сайт разработчика:

<VirtualHost *:80>
    DocumentRoot "/sites/developmentsite.com"
    ServerName developmentsite.com
    ServerAlias developmentsite.com
    <Directory /sites/developmentsite.com>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog "/sites/logs/developmentsite.com/error_log"
    CustomLog "/sites/logs/developmentsite.com/access_log" common
</VirtualHost>

Но я хочу отправить просто на сайте development.com. Я пробовал разные порты и ips, но думаю, что просто не понимаю чего-то базового.

Извините за такой простой вопрос. Спасибо!

Я думаю, вам нужно еще раз взглянуть на конфигурации виртуального хоста. Вопрос не имеет смысла. Как

<VirtualHost *:80>
    DocumentRoot "/sites/blocked"
    <Directory /sites/blocked>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

разрешает Developmentite.com и блокирует другие сайты, не ясно, когда ничего о том, что разрешать и что блокировать, не упоминается в конфигурации. Посмотри на http://www.sbarjatiya.com/notes_wiki/index.php/Apache_virtualhost_configuration_for_hosting_multiple_domains изучить основы виртуального хостинга Apache. Затем используйте

Order deny,allow
deny from all 

для запрета доменов, к которым вы не хотите получать доступ.

Затем используйте ProxyPass для пересылки запросов одного локального сайта на другой сервер и т. Д.

Я думаю, что ваш "блокирующий" VirtualHost работает только так, как вы надеетесь, из-за поведения Apache по умолчанию; если он не может найти VirtualHost с ServerName/ServerAlias совпадая с запросом, он будет использовать VirtualHost по умолчанию (который, если он не выбран явно, является первым, который он анализирует).

Вы должны поместить сайты, которые вы хотите явно заблокировать, в свой «блокирующий» VirtualHost, например:

<VirtualHost *:80>
    # Add these lines so Apache knows explicitly what to route here:
    ServerName blocking.localhost
    ServerAlias blockeddomain1.com *.blockeddomain1.com
    ServerAlias blockeddomain2.com *.blockeddomain2.com

    # Everything else
    DocumentRoot "/sites/blocked"
    <Directory /sites/blocked>
        Options Indexes FollowSymLinks Multiviews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>