Apache环境下强制http跳转https的方法大全

nanyuan 2020-08-18 15:42 115

摘要:启用https后,需要确保以前的http端口可以打开,而http的80端口有两个URL,因此需...

启用https后,需要确保以前的http端口可以打开,而http的80端口有两个URL,因此需要在有www和没有www的原始域名上同时指定一个https URL,并做两次Apache 301重定向。这实际上非常简单,最简单的方法是在。htaccess文件,如下所示:

RewriteCond%{http_host}^yourdomain.com[nc]RewriteRule^(.*)?$https://www.yourdomain.com/$1[R=301,L]RewriteCond%{SERVER_PORT}!^443$RewriteRule^(.*)?$https://www.yourdomain.com/$1[R=301,L]

第一个301自然跳转到没有www的新https,而接下来的301重定向是判断端口是否不是80,然后重定向,这样有www和没有www的域名将一起跳转到https。当然,这种在全台做301的方法是相当暴力的。通常,我们只需要将主域名设为301。我在这里是因为原来的两个域名被启用了。

这是Apachehttp跳转到https的另一种方式,仅供参考:

方法一

RewriteEngineOnRewriteBase/RewriteCond%{SERVER_PORT}80RewriteRule^(.*)$https://www.yourdomain.com/$1[R=301,L]#这样跳转的好处是独立IP主机也支持,访问ip能自动跳转到https

方法2

RewriteEngineonRewriteCond%{SERVER_PORT}!^443$RewriteRule^(.*)?$https://%{SERVER_NAME}/$1[R=301,L]#整站跳转

方法3

RewriteEngineonRewriteBase/yourfolderRewriteCond%{SERVER_PORT}!^443$#RewriteRule^(.*)?$https://%{SERVER_NAME}/$1[R=301,L]RewriteRule^.*$https://%{SERVER_NAME}%{REQUEST_URI}[R=301,L]#以上至针对某个目录跳转,yourfolder就是目录名

方法4

redirect301/你的网页https://你的主机+网页#至针对某个网页跳转

方法5

RewriteEngineonRewriteCond%{SERVER_PORT}!^443$RewriteCond%{REQUEST_URI}!^/tz.phpRewriteRule(.*)https://%{SERVER_NAME}/$1[R]

解释:

%{SERVER_PORT}——访问端口%{REQUEST_URI}——比如如果url是http://localhost/tz.php,则是指/tz.php%{SERVER_NAME}——比如如果url是http://localhost/tz.php,则是指localhost

上述规则意味着,如果被访问的url的端口不是443,并且被访问的页面不是tz.php,则应用重写规则。

这样,当您访问http://localhost/index.php或http://localhost/admin/index . PHP时,您将自动跳转到https://localhost/index.php或https://localhost/admin/index . PHP。但是,当访问http://localhost/tz.php时,不会进行任何跳转,这意味着可以同时访问http://localhost/tz.php和https://localhost/tz.php。

相关推荐

评论列表
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
关闭

用微信“扫一扫”