1

抱歉标题太长了,但我不知道还能放什么。我的问题正是如此。如果我输入 www.mydomain.com 会显示正确的页面,如果我输入 IP XXX.XX.XXX.XX,我会得到 apache 的默认页面。

我的虚拟主机文件是:

    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}

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

4

1 回答 1

0

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

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

这是您需要更改的声明块:

    <VirtualHost *:80>

      #.... details here

    </VirtualHost>

[编辑] 这有效:

    <VirtualHost xxx.xx.xx.xxx:80>
            redirect / www.mysite.com
    </VirtualHost>
于 2013-01-21T17:41:26.680 回答