首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非www到https://www

非www到https://www
EN

Stack Overflow用户
提问于 2018-10-13 22:54:06
回答 1查看 35关注 0票数 0

我正在运行ubuntu16.04中的NodeJs应用程序,我希望请求:http://http://www重定向到https://www

我尝试通过这样编辑/etc/apache2/sites-available/000-default.conf来实现这一点:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerAdmin admin@example.net
    ServerName www.example.net
    ServerAlias example.net www.example.net

    ErrorLog /var/log/apache2/mysite-error_log
    TransferLog /var/log/apache2/mysite-access_log

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www.example.net$ [NC]
    RewriteCond %{HTTP_HOST} !^$
    RewriteRule (.+) http://www.example.net$1 [R=301,L]
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

注意:当它是example.net时,我正在写我的域。

EN

回答 1

Stack Overflow用户

发布于 2018-10-14 10:17:21

端口80的VirtualHost中的

几个点:

1)第二个RewriteCond不是必需的,如果到达VirtualHost,%{HTTP_HOST}将始终设置为某个值。

2) ServerAlias example.net www.example.net。删除www.example.net,它已在ServerName中设置。

3)为了帮助调试Apache,您可以放入LogLevel debug,然后重试。

4)你的RewriteRule (.+) http://www.example.net$1 [R=301,L]实际上应该是

代码语言:javascript
复制
RewriteRule ^(.*)$ https://www.example.net$1 [R=301,L]

你的规则:

  1. 重定向到http.
  2. (.+):表示某个字符,1到n次。你一无所有(就像http://www.example.com一样,你的规则从来不匹配。

新规则将确保在请求的域被添加到https重定向后,任何内容,无论存在与否。

端口443的VirtualHost中的

在端口443,流量已经是https,所以只需要添加"www“:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} ^example.net$ [NC]
RewriteRule ^(.*)$ https://www.example.net$1 [R=301,L]

仅当请求的域名为https://example.net时,才会添加"www“。

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

https://stackoverflow.com/questions/52794205

复制
相关文章

相似问题

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