1

Я не могу заставить мой файл .htaccess работать, чтобы заставить трафик HTTPS

Структура сайта, которую я вижу, если я перехожу к своему провайдеру ftp

/
  domains
    mydomainname.com
      public_html
        blog
  • Файлы для моего сайта начинаются с public_html (index.html т.д.)
  • У меня есть установка WordPress в blog
  • Настройки Wordpress были установлены на https: (общие настройки упоминают https://www.mydomainname.com/blog в качестве URL Wordpress).
  • SSL-сертификат работает нормально, если я захожу в домен
  • Изначально в .htaccess был только blog , содержащий:

# НАЧАТЬ WordPress

RewriteEngine On
RewriteBase / блог /
RewriteRule ^ index.php $ - [L]
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
RewriteRule. /blog/index.php [L]

# END WordPress

Все виды учебников, которые я вижу, упоминают, что я должен добавить это в начало .htaccess:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.mydomainname.com/$1 [R,L]

... и что я должен поместить этот файл "в корень моего сайта".

Если у меня нет (другого) файла .htaccess :

  • Я могу перейти на https://www.mydomainname.com , перейти по ссылкам в блог WP и просмотреть там все https:
  • Если я зайду на http://www.mydomainname.com , перейдите по ссылкам в блоге WP, они превратятся в https:

Если я размещаю измененный htaccess в нескольких местах, у меня возникают следующие проблемы (в зависимости от того, какое содержимое / местоположения .htaccess я пробую):

  • Если я захожу на www.mydomainname.com он перенаправляется на https://www.mydomainname.com и я получаю сообщение "Сервер не найден"; или же:
  • Без форсировки с http: на https:

Вопросы:

  • Нужно ли размещать .htaccess в mydomainname.com или public_html (то есть, в какой папке находится этот знаменитый «корень моего сайта»)? Я пробовал оба.
  • Это также должно быть размещено в blog? Если да, то должны ли они быть идентичными?
  • Каковы надлежащие содержания файла .htaccess?

Я перепробовал все виды вариаций, но не могу заставить его работать - очевидно, еще не тот вариант.

FWIW: я предполагаю, что мой хостинг-провайдер использует Apache. Я не контролирую его конфигурацию.

2 ответа2

1

Я бы сказал, что вы должны поместить новый файл .htaccess в папку public_html.

Попробуйте следующее с mod_rewrite в вашем файле .htaccess

RewriteEngine On
# This will enable the Rewrite capabilities
RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in httpd.conf or .htaccess context

Эти три строки также необходимо добавить в файл .htaccess в папке blog , изменив RewriteRule для отображения этой подпапки:

RewriteRule ^/?(.*) https://%{SERVER_NAME}/blog/$1 [R,L]

Также может быть полезно применить mod_ssl для принудительного использования SSL с помощью директивы SSLRequireSSL :

Эта директива запрещает доступ, если для текущего соединения не включен HTTP по SSL (т.е. HTTPS). Это очень удобно в виртуальном хосте с поддержкой SSL или в каталогах для защиты от ошибок конфигурации, которые открывают вещи, которые должны быть защищены. Когда эта директива присутствует, все запросы отклоняются, которые не используют SSL. Имейте в виду, что это не сделает перенаправление на https само по себе.

0

Это краткое изложение статьи « Принудительное использование HTTPS на всех страницах вашего сайта WordPress», в которой описывается, как сделать весь блог WordPress безопасным с помощью HTTPS.

  1. Принудительно SSL для администратора и входа на страницы
    Добавьте следующую строку в файл wp-config.php в корне вашего каталога WordPress:
    define('FORCE_SSL_ADMIN', true);

  2. Установите https в настройках
    На панели администратора WordPress перейдите в « Settings -> General и измените оба URL-адреса, чтобы иметь https:// вместо http://:

  3. Обновите .htaccess
    Добавьте правила перезаписи в файл .htaccess находящийся в корне приложения WordPress:

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
    </IfModule>
    

Были добавлены две строки, в которых говорится, что если текущий порт не 443, перепишите URL-адрес, чтобы использовать HTTPS с перенаправлением 301:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  1. Очистите все кэши для вашего приложения

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .