我目前正在运行一个用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}时,我能够成功访问我的网络应用程序。
任何人都可以指导我在哪里做错了。
谢谢。
答案 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)