Apache重定向未定义域和默认站点

时间:2016-09-09 21:41:06

标签: apache redirect ssl mod-rewrite

我似乎无法想出这个。我有几个托管在Ubuntu 14.04 / LAMP上的站点,我有一个.conf文件,用于我正在托管的每个域。

但是,如果某人输入了一个不存在的子域,例如,服务器上的某个站点,apache只是将您重定向到一个随机站点(似乎找到/ etc / apache / sites中的第一个.conf文件 - 按字母顺序启用。)

当我的网站仅配置为<VirtualHost *:80>(非SSL)且有人(如Google僵尸网站)请求此网站的https版本时,会将其重定向到第一个带有{{1的.conf文件的网站规则定义。

我该怎样防止这种情况?我只是希望每个人都登陆错误页面,如果某个域的子域不存在,或者该站点的非https版本不存在(因为,显然你不能将https重定向到http)。

我是否可以在000-default.conf和000-default-ssl.conf中添加一些特定内容以防止这种情况发生?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是我为解决这个问题所采取的措施。添加了zzz.conf(因此它在/ etc / apache2 / sites-enabled /中按字母顺序读取最后一次)。这只会导致一个目录,其中的文件显示为&#34;错误。&#34;

这是我在zzz.conf中的内容:

<virtualhost *:80>
    ServerAlias *
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</virtualhost>

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAlias *
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on
        SSLCertificateFile  /etc/apache2/ssl/server.crt
        SSLCertificateKeyFile /etc/apache2/ssl/server.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>

        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>
</IfModule>