将网站从http重定向到https

时间:2013-07-05 07:47:41

标签: apache redirect http-redirect

我目前正在运行一个用struts编写的网站。我正在使用Apache Web服务器并使用AJP将我的Web应用程序代理到Apache tomcat服务器。

我的服务器是在亚马逊托管的Ubuntu服务器。我能够使用http。

成功运行我的Web应用程序

现在我计划为上述Web应用程序实现SSL。我已完成所有SSL实施步骤,现在我可以使用https成功访问我的网络应用,即https:// {MY_APPLICATION_URL}

现在的问题在于:当用户输入我的应用程序网址(如http:// {MY_APPLICATION_URL}或{MY_APPLICATION_URL})时,我需要重定向并使其仅使用https:// {MY_APPLICATION_URL}。 http访问不能在那里。

我在apache服务器(通过webmin)中找到以下链接:http://www.sslshopper.com/apache-redirect-http-to-https.html安装的重写模块。然后在我的应用程序的虚拟主机(编辑指令)中添加以下行。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

即使在上述重定向之后,当用户输入http:// {MY_APPLICATION_URL}或{MY_APPLICATION_URL}时,它也会显示我的apache服务器的默认欢迎页面。但是,当我输入https:// {MY_APPLICATION_URL}时,我能够成功访问我的网络应用程序。

任何人都可以指导我在哪里做错了。

谢谢。

3 个答案:

答案 0 :(得分:3)

这个解决方案帮助了我。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://domain.name/$1 [R,L]
</IfModule>

我希望它对你也有帮助。

答案 1 :(得分:0)

在服务器版本上与我合作:Apache / 2.4.6(CentOS)

将其添加到文件/etc/httpd/conf/httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R,L]
</IfModule>

或者使用php

<?php
function redirectTohttps() {
if($SERVER['HTTPS']!=”on”) {
$redirect= “https://”.$SERVER['HTTPHOST'].$SERVER['REQUEST_URI'];
header(“Location:$redirect”); } }
?>

答案 2 :(得分:0)

您可以轻松做到:

  • Webmin > 配置 Webmin > SSl 配置

  • 在 > 将非 SSL 请求重定向到 SSL 模式?

  • 重新加载浏览器并清除缓存 (Ctrl + Shift +R)