如何在 Apache 服务器上自动将 HTTP 重定向到 HTTPS?

2024-10-09 09:10:00
admin
原创
257
摘要:问题描述:我正在尝试设置从 HTTP 到 HTTPS 的自动重定向:From manage.mydomain.com --- To ---> https://manage.mydomain.com 我尝试将以下内容添加到我的httpd.conf文件中,但没有效果: RewriteEngine on ...

问题描述:

我正在尝试设置从 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)。

要将httpURL 重定向至https,请执行以下操作:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect "/" "https://www.example.com/"
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
</VirtualHost>
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2941  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1803  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与管理过程中扮演着至关重要的角色。然而,在实际运行中,资源冲突是经常会遇到的难题。资源冲突可能导致项目进度延迟、成本增加以及产品质量下降等一系列问题,严重影响企业的效益与竞争力。因此,如何有效应对PLM系统中的资源冲突,成为众多企业关注的焦点。接下来,我们将详细探讨5...
plm项目管理系统   31  
  敏捷项目管理与产品生命周期管理(PLM)的融合,正成为企业在复杂多变的市场环境中提升研发效率、增强竞争力的关键举措。随着技术的飞速发展和市场需求的快速更迭,传统的研发流程面临着诸多挑战,而将敏捷项目管理理念融入PLM,有望在2025年实现研发流程的深度优化,为企业创造更大的价值。理解敏捷项目管理与PLM的核心概念敏捷项...
plm项目   31  
  模块化设计在现代产品开发中扮演着至关重要的角色,它能够提升产品开发效率、降低成本、增强产品的可维护性与可扩展性。而产品生命周期管理(PLM)系统作为整合产品全生命周期信息的关键平台,对模块化设计有着强大的支持能力。随着技术的不断发展,到 2025 年,PLM 系统在支持模块化设计方面将有一系列令人瞩目的技术实践。数字化...
plm软件   28  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用