У меня создано несколько разных виртуальных хостов, и у каждого из них есть собственная папка в / 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]