我正在运行ubuntu16.04中的NodeJs应用程序,我希望请求:http://和http://www重定向到https://www。
我尝试通过这样编辑/etc/apache2/sites-available/000-default.conf来实现这一点:
<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时,我正在写我的域。
发布于 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]实际上应该是
RewriteRule ^(.*)$ https://www.example.net$1 [R=301,L]你的规则:
(.+):表示某个字符,1到n次。你一无所有(就像http://www.example.com一样,你的规则从来不匹配。新规则将确保在请求的域被添加到https重定向后,任何内容,无论存在与否。
端口443的VirtualHost中的
在端口443,流量已经是https,所以只需要添加"www“:
RewriteCond %{HTTP_HOST} ^example.net$ [NC]
RewriteRule ^(.*)$ https://www.example.net$1 [R=301,L]仅当请求的域名为https://example.net时,才会添加"www“。
https://stackoverflow.com/questions/52794205
复制相似问题