Возможно, мне просто нужна дополнительная информация, потому что я не понимаю, в чем я ошибаюсь. Я использовал сертификат SSL для защиты нашего сервера nagios. Мы хотим специально потребовать, чтобы весь трафик через nagios (например, 2 пользователя, смеется) использовал SSL.
Итак, я подумал, о, mod_rewrite + Rewrite Rule в .htaccess, верно?
Итак, я вошел в DocumentRoot и сделал vi .htaccess (его еще не было), а затем ввел следующее правило;
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://our.server.org/$1 [R,L]
Это абсолютно ничего не делает. Не нада.
Ухххх ..
Примечание. AllowOverride all в httpd.conf включен. Кроме того, я подтвердил, что модуль не закомментирован ... но обратите внимание, я не смог найти установленный модуль mod_rewrite, поэтому я скопировал его с другого сервера и поместил в modules / mod_rewrite.so. Это было странно, потому что он был включен в файле httpd.conf, но тогда не существовал в модулях ...
Я злодей :(
Вот мое полное перенаправление не-ssl VirtualHost:
<VirtualHost *:80>
ServerAdmin root@example.com
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>
Это относится скорее к конфигурации Apache, чем к .htaccess
.
Главное отличие в нашем RewriteCond
линии, где твоя %{SERVER_PORT} 80
и мой %{HTTPS} !=on
.
Если у вас есть две разные записи vhost, сделать следующее намного проще.
Redirect permanent / https://our.server.org/
В хосте без ssl. Не волнуйтесь, это покроет все введенные урисы.