HTTP – >使用OpenBSD的httpd进行HTTPSredirect

使用内置的httpd守护进程和已从Ubuntu 8.04服务器机箱移动的PHP5运行OpenBSD 4.4稳定版。 由于移动phpMyAdmin似乎每隔一段时间(有时候一直如login)都会产生以下错误:

Bad Request Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please. 

phpMyAdmin的地址位于https:// URL下,当发生此错误时,phpMyAdmin尝试使用http://domain.com:443/ ,这显然不起作用。

我也有一个mod_rewrite规则来始终强制HTTPS,但由于浏览器强制443端口永远不会被解雇。

任何想法如何弥补这一点?

[编辑]

这是我的虚拟主机指令,因为要求:

 <VirtualHost *:80> DocumentRoot /var/www/htdocs RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/htdocs ErrorLog logs/error_log TransferLog logs/access_log RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) RewriteRule .* - [F] </VirtualHost> 

[编辑2]

我关掉了重写规则,一切都像一个魅力:/不知道该怎么做,因为相同的重写规则在其他地方工作。

在我的PHPMyAdmin设置中,我有一个如下所示的apacheconfiguration:

 <VirtualHost 72.233.89.20:80> ServerName mysql ServerAlias mysql.* UseCanonicalName Off DocumentRoot /var/www/phpmyadmin/html/ DirectoryIndex index.html index.htm index.php AddType application/x-httpd-php .php php_admin_value open_basedir /var/www/phpmyadmin/ php_admin_value file_uploads 1 php_admin_value upload_tmp_dir /var/www/phpmyadmin/phptmp/ php_admin_value session.save_path /var/www/phpmyadmin/phptmp/ </VirtualHost> # ###### # Interface for https (openssl) ###### # <IfModule mod_ssl.c> <VirtualHost 72.233.89.20:443> ServerName mysql ServerAlias mysql.* UseCanonicalName Off DocumentRoot /var/www/phpmyadmin/ssl SSLEngine on SSLCertificateFile /etc/httpd/conf/ssl/server.crt SSLCertificateKeyFile /etc/httpd/conf/ssl/server.key DirectoryIndex index.html index.htm index.php AddType application/x-httpd-php .php php_admin_value open_basedir /var/www/phpmyadmin/ php_admin_value file_uploads 1 php_admin_value upload_tmp_dir /var/www/phpmyadmin/phptmp/ php_admin_value session.save_path /var/www/phpmyadmin/phptmp/ </VirtualHost> </IfModule> 

注意它是如何设置在端口80和端口443上的。

在http(端口80)的webroot中,我只有一个.htaccess文件,如下所示:

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

将其全部redirect到SSL。

所有的PHPMyAdmin文件都存在于SSL目录中。

我build议设置您的虚拟主机服务端口80和端口443. PHPMyAdmin本身只是一个PHP脚本,它不强制任何端口。 这是关于如何configuration您的networking服务器/虚拟主机。

由于浏览器通常不会从端口80redirect到端口443,因此可能是从phpmyadmin返回的第一个导致更改的页面。 看看你的phpmyadminconfiguration,看看会发生什么差异:

  • config.inc.php文件

    $ cfg ['ForceSSL']布尔值

是否在访问phpMyAdmin时强制使用https。

根据文档 ,默认情况下,但是由于你有mod_rewrite工作,可能会有一个“断开?

而现在看来,这些日子大家都指着为微软IE提供一个条款,例如:

  • SSL和MSIE客户端

SetEnvIf User-Agent“。MSIE ”nokeepalive ssl-unclean-shutdown

除此以外, …

无论如何,使用OpenBSD Apache 2.0.x软件包会对你有所帮助吗?

看起来你的Ubuntuconfiguration已经使用了Apache 2.0,并且你已经使用Apache 1.3.x将你的系统(和configuration)移动到默认的OpenBSDconfiguration

我想你至less需要看看WerkkreW所显示的php_admin_value。

当简单的事情不起作用时,我们总是可以碰撞LogLevel数据并查看结果。 这是嘈杂,但总是一个选项。

在Apacheconfiguration中启用S​​SLOptions StdEnvVars

StdEnvVars启用此选项时,将创build标准的SSL相关CGI / SSI环境variables集。 由于性能方面的原因,每个默认值都被禁用,因为信息提取步骤是一个相当昂贵的操作。 所以通常只对CGI和SSI请求启用这个选项。