Назад | Перейти на главную страницу

Перенаправление на SSL без искажения аргументов GET

Я добавил это в .htaccess для перенаправления HTTP на HTTPS:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Это работает, но искажает аргументы GET. Например, URL-адрес http://example.com/?a=b%20c превращается в http://example.com/?a=b%2520c.

Как я могу исправить это правило, чтобы аргументы GET оставались неизменными?

Попробуй это

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/$1 [R=301,QSA,L]

$ 1 - это все в REQUEST_URI, а флаг QSA добавит существующую строку запроса (переменные GET) к новому URL-адресу.

Просто используйте это:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]