У меня есть веб-сервер apache на машине debian. Я использую virtualmin для администрирования виртуальных хостов. У меня есть два сайта на этом сервере прямо сейчас, когда я пытаюсь получить доступ к одному сайту без www в URL-адресе, мне отказывают в доступе. Другой сайт в порядке. Сайт, на котором возникла проблема, представляет собой приложение cakephp и имеет следующий файл .htaccess в папке public_html.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
Ниже приведены директивы для проблемной области.
SuexecUserGroup "#1001" "#1001"
ServerName mydomain.net
ServerAlias www.mydomain.net
ServerAlias webmail.mydomain.net
ServerAlias admin.mydomain.net
DocumentRoot /home/mydomain/public_html
ErrorLog /var/log/virtualmin/mydomain.net_error_log
CustomLog /var/log/virtualmin/mydomain.net_access_log combined
ScriptAlias /cgi-bin/ /home/mydomain/cgi-bin/
ScriptAlias /awstats/ /home/mydomain/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5
<Directory /home/mydomain/public_html>
Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
allow from all
AllowOverride All
AddHandler fcgid-script .php
AddHandler fcgid-script .php5
FCGIWrapper /home/mydomain/fcgi-bin/php5.fcgi .php
FCGIWrapper /home/mydomain/fcgi-bin/php5.fcgi .php5
</Directory>
<Directory /home/mydomain/cgi-bin>
allow from all
</Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} =webmail.mydomain.net
RewriteRule ^(.*) https://mydomain.net:20000/ [R]
RewriteCond %{HTTP_HOST} =admin.mydomain.net
RewriteRule ^(.*) https://mydomain.net:10000/ [R]
RemoveHandler .php
RemoveHandler .php5
IPCCommTimeout 31
<Files awstats.pl>
AuthName "mydomain.net statistics"
AuthType Basic
AuthUserFile /home/mydomain/.awstats-htpasswd
require valid-user
</Files>
Что произойдет, если вы замените ServerName на ServerAlias?
ServerName www.mydomain.net
ServerAlias mydomain.net
Затем попробуйте добавить еще один поддельный виртуальный домен.