在apache服务器中设置http前缀自动跳转到https规则

编辑:管理员 发布时间:2022-06-01 17:48:08685

随着互联网中超文本传输协议的更替,新一代经过加密更为安全的https逐渐普及,在apache服务器中该怎样将http协议的前缀网址自动跳转到https前缀呢?

首先我们需要分别在httpd.conf中配置80端口以及443端口:

80端口主要设置http协议

<VirtualHost *:80>

DocumentRoot "C:/gengmulu"

ServerName www.xxx.xxx

ServerAlias xxx.xxx

<Directory "C:/gengmulu">

Options FollowSymLinks Includes

AllowOverride All

Require all granted

</Directory>

</VirtualHost>

而443端口设置的时

<VirtualHost *:443>

SSLEngine on

ServerName www.xxx.xxx

ServerAlias xxx.xxx

SSLCertificateFile "C:/公共密匙public.crt"

SSLCertificateKeyFile "C:/私人密匙.key"

SSLCertificateChainFile "C:/通用密匙chain.crt"

DocumentRoot "C:/gengmulu"

</virtualhost>

需要在apache中开启ssl模块,去掉LoadModule ssl_module modules/mod_ssl.so前面的#号.

然后我们可以在httpd.conf配置文件中开启apache2.4的重写模块mod_rewrite

新建空白的名称为.htaccess的文件,将其存放在网站的根目录中,天.htaccess重写代码如下:

<IfModule mod_rewrite.c>

Options +FollowSymlinks -Multiviews

RewriteEngine On

RewriteCond %{SERVER_PORT} !^443 [NC]

RewriteRule ^(.*)$ https://www.xxx.xxx/$1 [R=301,L]

</IfModule>

以上就可一实现在apache2.4的服务器环境下,http跳转到https,用正则判断端口不是443时自动跳转到https域名.

设置完成后可以使用ssl证书解析工具查看设置的https协议使用的ssl证书的相关属性.

$1表示匹配根目录下所有链接.

如果在[NC]中在添加个or或者的属性判断,与之前一篇跳转到www域名的文章内容结合一起:

代码如下:

<IfModule mod_rewrite.c>

Options +FollowSymlinks -Multiviews

RewriteEngine On

RewriteCond %{http_host} ^xxx.xxx [NC,OR]

RewriteCond %{SERVER_PORT} !^443 [NC]

RewriteRule ^(.*)$ https://www.xxx.xxx/$1 [R=301,L]

</IfModule>

设置完成后重启apache,我们就可以实现带http前缀自动跳转到https前缀网址,不带www的顶级域名跳转到带www的域名.

TAGS: apache 服务器管理
热门文章
最新文章

热门标签

数学计算路径命令行表单字符符号nginxcookiejavapython数组文字处理小数服务器管理apache图片处理