• Здравствуйте.
    Что есть: домен, установленный на него сертификат ssl, чистый wordpress.
    Задача. Правильно прописать редирект на https (в коде файла .htaccess)

    3 варианта
    а)
    _______________________________________
    RewriteCond %{HTTP:X-SSL} !^yes$
    RewriteRule (.*) https://yourdomain.com/$1 [R=301,L]

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress
    ____________________________

    б)
    ________________________
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP:X-SSL} !^yes$
    RewriteRule (.*) https://yourdomain.com/$1 [R=301,L]
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress

    в)
    _______________________
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP:X-SSL} !^yes$
    RewriteRule (.*) https://yourdomain.com/$1 [R=301,L]
    </IfModule>

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress

    Спасибо.

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Модератор Юрій

    (@yube)

    Ни один из трех.

    1. Внутрь блока # BEGIN WordPress ... # END WordPress ничего руками писать не рекомендуется — wordpress, если у него есть возможность, все равно запишет туда своё.

    2. Перед использованием директив Rewrite*, нужно включить механизм директивой RewriteEngine On. И лучше обернуть в условие <IfModule mod_rewrite.c> ... </IfModule>

    3. Имя переменной окружения, в которой содержится информация о SSL (в Ваших вариантах это HTTP:X-SSL) зависит от конфигурации сервера.

    Рабочий .htaccess с одного из моих подопечных

    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    

    Спасибо. По двум моментам понятно (в условие и выносим), а по третьему не совсем. И со слешами R=301,L или L,R=301 не понятно.

    Модератор Юрій

    (@yube)

    а по третьему не совсем.

    Если Апач без никого на фронте, то проверяем HTTPS. Если на фронте nginx или аналог, то проверять надо то, что он передает Апачу/php. Это может быть HTTP_X_FORWARDED_PROTO или что-то иное. Бывает очень экзотическое, а то и вообще может не быть. Лучше посмотреть в phpinfo или спросить у ТП хостинга.

    И еще. Бывает, для корректной работы движка необходимо добавлять в htaccess

    SetEnv HTTPS "on"
    

    И со слешами R=301,L или L,R=301 не понятно.

    Порядок опций тут не принципиален.

Просмотр 3 ответов — с 1 по 3 (всего 3)

Тема «Как правильно прописать в .htaccess редирект на https» закрыта для новых ответов.