如果我输入www.mydomain.com页面显示,如果我输入IP XXX.XX.XXX.XX,我会得到apache的默认页面

时间:2013-01-21 16:50:18

标签: apache virtualhost

很抱歉这个长标题,但我不知道还有什么要放。我的问题正是如此。如果我输入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}

在我的虚拟主机所在的文件的开头。什么都没有。

1 个答案:

答案 0 :(得分:0)

您的虚拟主机文件仅在端口443-- https上匹配。您需要创建第二个侦听后80的内容。第二个将具有所有相同的信息,而不是声明中的端口443(或任何证书详细信息)。

apache的默认配置是捕获所有端口80请求。

以下是您需要更改的声明栏:

    <VirtualHost *:80>

      #.... details here

    </VirtualHost>

[编辑]这有效:

    <VirtualHost xxx.xx.xx.xxx:80>
            redirect / www.mysite.com
    </VirtualHost>