如何在 Apache 服务器上自动将 HTTP 重定向到 HTTPS?
- 2024-10-09 09:10:00
- admin 原创
- 77
问题描述:
我正在尝试设置从 HTTP 到 HTTPS 的自动重定向:
From manage.mydomain.com --- To ---> https://manage.mydomain.com
我尝试将以下内容添加到我的httpd.conf文件中,但没有效果:
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
我该如何修复它?
环境:带有Apache 的CentOS
解决方案 1:
我实际上已经遵循了这个例子并且它对我有用:)
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mysite.example.com
Redirect permanent / https://mysite.example.com/
</VirtualHost>
<VirtualHost _default_:443>
ServerName mysite.example.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
然后执行以下操作:
/etc/init.d/httpd restart
解决方案 2:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
Apache 使用 mod_rewrite 将 HTTP 重定向到 HTTPS
或者
Apache:将 http 重定向到 https Apache 安全连接 – 强制 HTTPS 连接
解决方案 3:
我搜索了apache 将 http 重定向到 https ,结果找到了这里。这是我在Ubuntu上所做的:
1)启用模块
sudo a2enmod rewrite
sudo a2enmod ssl
2)编辑您的网站配置
编辑文件
/etc/apache2/sites-available/000-default.conf
内容应该是:
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile <path to your certificate file>
SSLCertificateKeyFile <path to your private key file>
# Rest of your site configuration
# ...
</VirtualHost>
注意 SSL 模块需要证书。您需要指定一个现有证书(如果您购买了)或自行生成自签名证书。
3)重新启动Apache
sudo service apache2 restart
解决方案 4:
不推荐使用mod_rewrite 。相反,请使用虚拟主机和重定向。
如果您倾向于使用mod_rewrite:
RewriteEngine On
# This will enable the Rewrite capabilities
RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same
location but using HTTPS.
# I.e., http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in
# httpd.conf or .htaccess context
参考:Httpd Wiki - RewriteHTTPToHTTPS
如果你正在寻找301 永久重定向,那么重定向标志应该是,
R=301
因此 RewriteRule 将会像这样,
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
解决方案 5:
我需要这个来做一些简单的事情,比如将所有 HTTP 流量从我服务器上的默认 Apache 主页重定向到通过 HTTPS 提供的主页。
由于我对配置 Apache还很陌生mod_rewrite
,所以我宁愿避免直接使用,而是选择一些更简单的方法,例如:
<VirtualHost *:80>
<Location "/">
Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
</Location>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/html"
SSLEngine on
...
</VirtualHost>
我喜欢这个,因为它允许我使用 Apache 变量。这样,我就不必指定实际的主机名,因为它只是一个没有关联域名的 IP 地址。
参考:
在目标中使用 RedirectMatch 和 HTTP_HOST
解决方案 6:
实际上,您的主题属于Server Fault,但您仍然可以尝试检查这些.htaccess指令:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1
解决方案 7:
如果你使用的是 Apache 2.4,请检查文件000-default.conf。删除DocumentRoot
并添加:
Redirect permanent / https://[your-domain]/
解决方案 8:
服务器版本:Apache 2.4.29(Ubuntu)
在网上和 Apache HTTP Server 官方文档中搜索了很长时间后,唯一对我有用的解决方案来自/usr/share/doc/apache2/README.Debian.gz
要启用 SSL,请输入(以 root 用户身份):
a2ensite default-ssl
a2enmod ssl
在文件/etc/apache2/sites-available/000-default.conf中,添加
重定向“/”“https://sub.domain.com/”
<VirtualHost *:80>
#ServerName www.example.com
DocumentRoot /var/www/owncloud
Redirect "/" "https://sub.domain.com/"
就是这样。
PS:如果您想在不解压的情况下阅读手册:
gunzip -cd /usr/share/doc/apache2/README.Debian.gz
解决方案 9:
该代码对我有用。
# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
解决方案 10:
对我来说,这是有效的:
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
解决方案 11:
请在 Apache 的 Virtualhosting 配置中尝试这个,然后重新加载 Apache 服务:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
解决方案 12:
这对我有用:
RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]
解决方案 13:
此处的 Apache 文档涵盖了此特定问题。使用以下面摘录中的配置为模型的 Apache 配置(通常您需要将文件命名为类似com.example.www.conf
)。
要将
http
URL 重定向至https
,请执行以下操作:<VirtualHost *:80> ServerName www.example.com Redirect "/" "https://www.example.com/" </VirtualHost> <VirtualHost *:443> ServerName www.example.com # ... SSL configuration goes here </VirtualHost>
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件