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

Виртуальные хосты на apache для указания domain.com, domain.net, domain.org для всех переходят на domain.com

Все имена в настоящее время указывают на одну и ту же папку веб-сервера, что правильно. То есть domain.net, domain.org и т. Д. Работают без перенаправления на основной .com

Как получить посещения .org и .net для перенаправления браузера на domain.com?

Это должно быть базовым, но я не могу придумать лучший подход.

Я бы посоветовал вам использовать RewriteRule из mod_rewrite чем использовать Redirect из mod_alias. Поскольку мод переписывать более универсален.

<VirtualHost *:80>
     ServerName domain.org
     ServerAlias www.domain.org domain.net www. domain.net
     RewriteEngine on
     RewriteCond %{HTTP_HOST} ^(www\.)?domain\.(net|org)$ [NC]
     RewriteRule ^ http://domain.com%{REQUEST_URI} [L,R=301]
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /path/to/documentroot
    ServerName domain.com
    ServerAlias www.domain.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

Убедитесь, что у вас есть NameVirtualHost *:80 раскомментированный.

Пояснение:


     RewriteEngine on

Устанавливает RewriteEngine на


     RewriteCond %{HTTP_HOST} ^(www\.)?domain\.(net|org)$ [NC]

Спички %{HTTP_HOST}: т.е. базовый URL-адрес хоста. Для получения дополнительной информации RewriteCond & http headers посещение: RewriteCond. [NC] это флаг: 'nocase | NC' (без регистра)

Это делает тест нечувствительным к регистру - различия между 'A-Z' и 'a-z' игнорируются как в развернутой TestString, так и в CondPattern. Этот флаг эффективен только для сравнения TestString и CondPattern. Он не влияет на файловую систему и проверки подзапросов.

Также вы должны перенаправить URL-адреса, которые начинаются с WWW. поэтому ^(www\.) в выкройке.


     RewriteRule ^ http://domain.com%{REQUEST_URI} [L,R=301]

Перезаписывает URL-адрес на domain.com если матч в RewriteCond Происходит. Добавляет любой URI запроса, если он есть. т.е. URI для этого запроса (относительно DOCUMENT_ROOT).

если URl был: domain.com/web/hello.php затем REQUEST_URI=/web/hello.php


@Макароны,

Что я делаю в этой конкретной ситуации, так это создаю отдельный блок виртуального хоста

<VirtualHost *>
   ServerName domain.net
   ServerAlias domain.org

   Redirect permanent http://domain.com
</VirtualHost>

Надеюсь, это поможет.

Исмаэль Казимпан