很抱歉这个长标题,但我不知道还有什么要放。我的问题正是如此。如果我输入www.mydomain.com,则会显示正确的页面,如果我输入IP XXX.XX.XXX.XX,我会获得apache的默认页面。
我的VirtualHost文件是:
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin myname@mydomain.com
DocumentRoot /home/user/site/rails-webpage/public
SSLEngine on
SSLCertificateFile /home/user/doc/www_desmangeo_it.crt
SSLCertificateKeyFile /home/user/doc/desmangeo.key
SSLCertificateChainFile /home/user/doc/AddTrustExternalCARoot.crt
<Directory /home/user/site/rails-webpage/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
感谢Ray给出的评论,我注意到如果我使用https发出IP请求,我会转到正确的页面。所以我似乎并没有“重定向80端口的视图”。我的意思是,当我尝试使用端口80时,我收到了SSL错误。所以我需要使用443端口。如何告诉服务器“切换”到端口443?
[编辑]所以我使用
加载了重写模块 sudo a2enmod rewrite
并添加了
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
在我的虚拟主机所在的文件的开头。什么都没有。
答案 0 :(得分:0)
您的虚拟主机文件仅在端口443-- https上匹配。您需要创建第二个侦听后80的内容。第二个将具有所有相同的信息,而不是声明中的端口443(或任何证书详细信息)。
apache的默认配置是捕获所有端口80请求。
以下是您需要更改的声明栏:
<VirtualHost *:80>
#.... details here
</VirtualHost>
[编辑]这有效:
<VirtualHost xxx.xx.xx.xxx:80>
redirect / www.mysite.com
</VirtualHost>