我可能只是需要一些额外的见解,因为我没有看到我要去哪里错了。 我使用SSL证书来保护我们的nagios服务器。 我们想特别要求所有通过nagios的stream量(如2个用户,lol)使用SSL。
所以我想,哦,mod_rewrite +在.htaccess重写规则,对不对?
所以我进入了DocumentRoot并做了一个vi .htaccess(一个还不存在),然后我遵循下面的规则:
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://our.server.org/$1 [R,L]
这绝对没有。 纳达
Whhhyy ..
注意:httpd.conf中的AllowOverride全部打开。 另外,我validation了这个模块没有被注释掉,但是注意,我找不到安装的mod_rewrite模块,所以我从另一个服务器上复制了它,并把它放在modules / mod_rewrite.so中。 这很奇怪,因为它在httpd.conf文件中启用,但是在模块中不存在…
我是坏人:(
这是我的redirectnon-ssl VirtualHost的全部内容:
<VirtualHost *:80> ServerAdmin [email protected] ServerName www.example.com ServerAlias example.com RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^/(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] LogLevel warn CustomLog /var/log/apache2/access.log vhost_combined ErrorLog /var/log/apache2/error.log </VirtualHost>
这属于Apacheconfiguration,而不是在.htaccess 。
主要区别在于我们的RewriteCond行,其中您的是%{SERVER_PORT} 80 ,我的是%{HTTPS} !=on 。
如果您有两个不同的虚拟主机条目设置,那么执行以下步骤会更容易。
Redirect permanent / https://our.server.org/
在非ssl的vhost中。 不要担心会覆盖所有进入的uris。