/ / Перенаправлення HTTP на HTTPS за допомогою Apache - apache, перенаправлення, мод-переписати, ubuntu

Перенаправлення HTTP на HTTPS з Apache - apache, redirect, mod-rewrite, ubuntu

У мене виникла проблема з використанням mod_rewrite для примусового перенаправлення запитів HTTP на HTTPS за допомогою Apache 2.2.22 на Ubuntu Server 12.04.

Мій / etc / apache2 / доступний для сайтів / файл за замовчуванням такий:

    <VirtualHost *:80>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

Хост HTTPS визначений у default-ssl у тому самому каталозі.

Відвідуючи локальну IP-адресу сервера,Здається, переспрямування працює нормально. Однак, отримуючи доступ до нього через FQDN, він не "т. За допомогою FQDN сайт доступний на порту 5443, який відображається в брандмауері на 443 на сервері, тому, можливо, це має щось спільне з проблемою. Я не можу просто використовуйте порт 443 безпосередньо, як він використовується на цій IP-адресі іншим сервером.

Щоб уточнити, чинні посилання:

    https://website:5443
https://192.168.200.80:443

Тут перенаправлення працює:

    http://192.168.200.80

Але наступне подає 400 поганих запитів, і саме тут потрібно переадресація:

    http://website:5443/

"Ваш браузер надіслав запит, який цей сервер не міг зрозуміти. Причина: Ви говорите звичайний HTTP на порту сервера з підтримкою SSL. Натомість використовуйте схему HTTPS для доступу до цієї URL-адреси. "

Відповіді:

8 для відповіді № 1

Це цілком можливо. Далі перенаправляє всі http на URL-адресу https.

<VirtualHost *:80>
ServerName   mydomainname.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

не забудьте завантажити модуль перезапису mod_rewrite і увімкнути його.


2 для відповіді № 2

Ваша проблема тут полягає в початковому HTTP-запиті: це не працюватиме, оскільки сервер не буде працювати, не розумітиме, що він отримує запит через порт 443 (як передбачає код відповіді).

Якщо порту не вказано, протокол http за замовчуванням порт 80, https до порту 443.

Це також причина, чому працює ваш локальний редирект. Б'юся об заклад, якщо ви перейдете на сторінку через http://website/ (при належній переадресації портів на порт 80), він також буде працювати. Також зверніть увагу, що ваш VirtualHost у будь-якому випадку визначається лише для порту 80, тому він не буде дійсним для запитів, надісланих на website:5443 (або website:443)

Загалом, вам потрібен сервер, що приймає обидваЗапити HTTP та HTTPS на одному порту. Не впевнений, що будь-який популярний сервер насправді підтримує щось подібне, оскільки (я думаю) він по суті порушує технічні характеристики.


1 для відповіді № 3

якщо ви хочете перенаправити свій сайт з http:// anything.example.com до https: //anything.example.com ... Просто створіть виділений файл .conf для хостингу як /etc/httpd/conf.d/dedicated.conf та інший файл конфігурації як virtual.conf. .. записи для виділеного.conf такі ....

це спеціальний файл конфігурації хостингу сервера для перенаправлення його на https ... го [] [1]

<virtualhost *:80>
servername host.example.com
documentroot /var/www/html
rewriteengine on
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
sslcertificatefile /etc/pki/tls/certs/name.crt
sslcertificatekeyfile /etc/pki/tls/private/name.key
</virtualhost>
<directory /var/www/html>
allowoverride all
require all granted
</directory>

0 для відповіді № 4
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]