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

apache2 указывает не-www на root вместо папки веб-сайта

У меня создано несколько разных виртуальных хостов, и у каждого из них есть собственная папка в / var / www /, как это

/var/www/example1/
/var/www/example2/

Теперь, когда я набираю url с www www.example1.com это указывает на /var/www/example1/index.html так что все работает нормально, но когда я печатаю без www example1.com это указывает на /var/www/ и я вижу все папки, у меня нет index.html в /var/www/.

Я посмотрел Вот и создал .htaccess в / var / www /:

    RewriteEngine On
    RewriteBase /
    RewriteCond % ^example1.com [NC]
    RewriteRule ^(.*)$ http://www.example1.com/$1 [L,R=301]

но это не работает.

Вот как выглядят все хосты:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName *example1*
        ServerAlias *.*example1*
        DocumentRoot /var/www/example1
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/example1/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None

Я очистил кеш браузера. Есть идеи, как это исправить?

В Название сервера директива не принимает подстановочные знаки, вот что ServerAlias для. Из руководства

ServerName [схема: //] полное-доменное-имя [: порт]

так что вы должны сделать что-то вроде

ServerName example1.com
ServerAlias *.*example1*.com

Вы можете разместить следующий код в разделе vhost httpd.conf Apache или в файле .htaccess.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=permanent,L]