首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将永久http重定向到https

将永久http重定向到https
EN

Server Fault用户
提问于 2015-02-03 23:32:47
回答 1查看 17.9K关注 0票数 3

系统: Ubuntu 14.04,Apache 2.4.7

我希望将所有对http://domain.comhttps://domain.com的请求重定向到https://domain.com。我还想将请求重定向到"www“子域到主domain.com主机,而其他几个子域(tools.domain.com和phpmyadmin.domain.com)暂时可以通过http访问。

所有这些都应该通过domain.com的虚拟主机配置文件(下面的/etc/apache2/sites-available/domain.com.conf完整内容)直接完成,然后几次重新启动apache2服务。

http://domain.com重定向到https://domain.com工作。从http://www.domain.com重定向到https://domain.com不起作用。从https://www.domain.com重定向到https://domain.com不起作用。

以下是虚拟主机文件的内容:

代码语言:javascript
复制
<VirtualHost *:*>
    ServerName www.domain.com
    Redirect permanent / https://domain.com/
</VirtualHost>

<VirtualHost _default_:80>
    ServerName domain.com
    Redirect permanent / https://domain.com/
    LogLevel error
</VirtualHost>

<VirtualHost *:80>
    ServerName tools.domain.com
    DocumentRoot /var/www/domain.com/subdomains/tools/public
</VirtualHost>

<VirtualHost *:80>
    ServerName phpmyadmin.domain.com
    DocumentRoot /usr/share/phpmyadmin
</VirtualHost>

<VirtualHost _default_:443>
    ServerName domain.com

    DocumentRoot /var/www/domain.com/public

    <Directory /var/www/domain.com/public>
        Require all granted
    </Directory>

    # SSL CERTIFICATES
    GnuTLSEnable on
    GnuTLSExportCertificates on
    GnuTLSCacheTimeout 500
    GnuTLSCertificateFile /etc/ssl/certs/domain.com-certificate-125023.crt
    GnuTLSKeyFile         /etc/ssl/private/domain.com.key
    GnuTLSPriorities      NORMAL
</VirtualHost>

更新:只有https://www.domain.com不能工作

愚蠢的我:问题超出了服务器!我没有在我的DNS区域中配置任何'www‘子域。我改正了,现在我快到了。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2015-02-04 17:02:37

_default_的意思是默认

使用这样的配置:

代码语言:javascript
复制
<VirtualHost _default_:80>
    ...
</VirtualHost>

<VirtualHost _default_:443>
    ...
</VirtualHost>

<VirtualHost *:*>        
    ...
</VirtualHost>

最后一个虚拟主机在端口80和443上是不可访问的,因为这些端口上的任何请求都将由相关的_default_虚拟主机处理。*:*虚拟主机可能根本不需要(您期望公共用户使用更多的端口吗?)

工作示例

因此,要使所需的一切都重定向到https://example.com,例如:

代码语言:javascript
复制
<VirtualHost *:443>
    ServerName example.com

    # SSL config

    ...
</VirtualHost>

<VirtualHost *:80>
    RewriteEngine On
    RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>

    # SSL config

    RewriteEngine On
    RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
</VirtualHost>

注意捕获的使用-所有重写规则,因为使用重定向只匹配一个url。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/664768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档