1

Я настроил apache с VirtualDocumentRoot, и он работает нормально:

UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/app/www

Но для каждого домена мне нужно 2 каталога:

Вот мое приложение

/var/www/example.com/app/www

Другой каталог содержит только .htaccess с перенаправлением на example.com

/var/www/www.example.com/app/www

Мой вопрос: есть ли способ, которым я могу автоматически перенаправить каждый домен с префиксом www на его не-www аналог?

2 ответа2

1

Хорошо, это старый вопрос, но так как я нашел его в Google, другие тоже могут оказаться здесь, и почему бы не дать этим будущим посетителям иное решение проблемы? (хотя технически это не ответ на вопрос ОП, поскольку вы попросили переадресацию, но я думаю, что это решит вашу проблему)

В зависимости от того, что вы хотите, вы можете:

1) Попросите все для домена перейти в один каталог: example.com www.example.com foo.example.com все перейдите в /var/www/example.com/app/www

<VirtualHost *:80>
    ServerName catch.all
    ServerAlias *
    VirtualDocumentRoot /var/www/%-2.0.%-1.0/app/www
</VirtualHost>

2) Иметь структуру каталогов, например /var /www /[domain] /[subdomain]. И example.com, и www.example.com идут по адресу /var/www/example.com/www, и shop.example.com будет обслуживаться. из /var/www/example.com/shop

<VirtualHost *:80>
    ServerName sub.domain
    ServerAlias *.*.*
    VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3
</VirtualHost>

<VirtualHost *:80>
    ServerName bare.domain
    ServerAlias *.*
    VirtualDocumentRoot /var/www/%-2.0.%-1.0/www
</VirtualHost>

Примечание: www будет обслуживаться правилом sub.domain. А несуществующие субдомены приведут к 404.

0

Хорошо, очень просто добавить такой тип перенаправления, просто нужно добавить правило перезаписи для всего сервера.

Моя окончательная конфигурация virtualhost выглядит так

<VirtualHost *:80>
    UseCanonicalName Off
    VirtualDocumentRoot /var/www/%0/app/www
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1$1 [R=301,L]
    <Directory /var/www/%0/app/www>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
... other options

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .