htaccess重定向不适用于HTTPS - 400 Bad Request Apache 2.4.6

时间:2015-05-11 20:58:49

标签: apache .htaccess http ssl https

我刚刚在各种网站上安装了SSL证书。如果我直接访问网站的https版本,它们工作正常,但当我转到http版本时,我得到:"原因:您正在向支持SSL的服务器端口说明HTTP。 #34;

这应该是什么,但不是......

super.drive()

它的任何版本也没有

if (isset($_POST['logonhours'])){
$set_logonhours = $_POST['logonhours'];
$set_logonhours_end = mb_substr($set_logonhours, -5); // EST TIMEZONE
$set_logonhours_begin = mb_substr($set_logonhours, 0, -5); // EST TIMEZONE
$set_logonhours_tz = $set_logonhours_end . $set_logonhours_begin; 

$set_eighthourchunks = str_split($set_logonhours_tz, 8);


foreach ($set_eighthourchunks as $chunk){
$logondec = pack("C", bindec(strrev($chunk))); //inconsistently works sometimes
}
echo $logondec;
$adldap->user()->modify($_POST['username'], array("logonhours"=>$logondec));


echo '<br>';
echo ldap_error($adldap->getLdapConnection()) . '<br>';
}

我甚至尝试将其放在服务器上的vhost.conf文件中。

我和我的开发人员都没有想法,令人震惊的是,我们无法找到与全能的Google一起帮助我们的任何事情。有人有什么想法?

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我正在使用这些重写规则将我的http请求重定向到我的应用程序上的https并使用SSL证书。

RewriteEngine Off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

答案 2 :(得分:0)

我认为您的问题很早就会发生,即使在请求上应用mod_rewrite之前也是如此。

您在端口80上侦听的VirtualHost是一个https虚拟主机,但浏览器试图在端口80上说 plain http ,但这不起作用。

在Apache上激活SSL:

SSLEngine on

只有在*:443(或something:443的任何变体)上侦听Virtualhost时,才会激活此说明。

您应该在端口80上添加一些Virtualhost侦听,支持可以在该服务器上使用的一堆ServerName和ServerAlias(或者可能是所有名称,通过确保此Virtualhost是端口80的默认名称),并且仅支持工作是重定向443端口。

在这里你可以使用@Anand Bhat提供的链接来执行这个任务(并且不需要mod_rewrite)。

但所有这些'重定向到https'任务假设您已经有一个工作虚拟主机,其中https未激活。因为如果https在任何地方都被激活,你甚至无法与服务器开始讨论以接收重定向,那么就没有'普通的http'渠道来接收这个响应甚至开始要求某些东西。

答案 3 :(得分:0)

好的,所以万一其他人遇到这个问题,我现在想要更新,我终于修复了。对于我们来说,我们在vhost.conf文件中还有其他一些干扰的东西。一旦我将其删除并采取了其他一些建议,这就是最终在vhost.conf中工作的代码。 .htaccess文件现在没有任何内容,因为它不需要。

## -- VIRTUAL HOSTS -- ##
NameVirtualHost *:80

<VirtualHost *:80>
        ServerName dev.example.net
        Redirect permanent / https://dev.example.net/
</VirtualHost>

<VirtualHost *:443>
        #-SERVER CONFIG-#
        ServerAdmin webmaster@example.net
        ServerName dev.example.net
        ServerAlias dev.example.net
        DocumentRoot /var/www/html/example

        #-SSL-#
        SSLEngine On
        SSLProtocol all -SSLv2
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
        SSLCertificateFile /etc/httpd/conf/ssl.crt/...
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/...
        SSLCACertificateFile /etc/httpd/conf/ssl.crt/...
        SSLCertificateChainFile /etc/pki/tls/certs/...
        SSLCACertificateFile /etc/pki/tls/certs/...

        #-LOGGING-#
        ErrorLog /var/www/html/example/error_log

</VirtualHost>