使用内置的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>
我关掉了重写规则,一切都像一个魅力:/不知道该怎么做,因为相同的重写规则在其他地方工作。
在我的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,看看会发生什么差异:
$ cfg ['ForceSSL']布尔值
是否在访问phpMyAdmin时强制使用https。
根据文档 ,默认情况下,但是由于你有mod_rewrite工作,可能会有一个“断开?
而现在看来,这些日子大家都指着为微软IE提供一个条款,例如:
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中启用SSLOptions StdEnvVars
StdEnvVars启用此选项时,将创build标准的SSL相关CGI / SSI环境variables集。 由于性能方面的原因,每个默认值都被禁用,因为信息提取步骤是一个相当昂贵的操作。 所以通常只对CGI和SSI请求启用这个选项。