HTTPS на Wordpress размещен на AWS Elastic Beanstalk - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь установить протокол https через HTTP для моего сайта.Мне удалось форсировать http://example.com => https://example.com и все URL-адреса блога.

Однако, когда я пытаюсь получить доступ к https://example.com/wp-admin, он говорит, что example.com перенаправил вас слишком много раз.ERR_TOO_MANY_REDIRECTS.

Обратите внимание:

  • Моя локальная разработка и AWS Elastic Beanstalk подключены к одной базе данных.
  • localhost и localhost/wp-adminработает нормально и может успешно войти в панель администратора.
  • Я установил переменную среды WP_ENV, чтобы определить, является ли она локальной или производственной средой.

Вот моя настройка моего wp-config.php файла.

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
    $_SERVER['HTTPS'] = 'on';

/** HTTPS  */
if (getenv('WP_ENV') == 'production'){
    define('FORCE_SSL_ADMIN', true);
    define('FORCE_SSL_LOGIN', true);
    define('WP_HOME', 'https://example.com');
    define('WP_SITEURL', 'https://example.com');
}

if(getenv('WP_ENV') == 'development'){
    /* Http only.  */
    define('WP_HOME', 'http://localhost');
    define('WP_SITEURL', 'http://localhost');
} 

А вот и мой .htacess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

<If "%{HTTPS} == 'on'">
# For a site running on port 80 (http)
    RewriteCond %{SERVER_PORT}  ^80$
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^wp-(admin|login|register)(.*) https://example.com/wp-$1$2 [L]
</If>

RewriteCond %{SERVER_PORT}  ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>

# END WordPress

1 Ответ

0 голосов
/ 09 февраля 2019

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

# Redirect HTTP to HTTPS (all requests)
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Prevent additional filesystem check
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Предполагается, что вы находитесь за балансировщиком нагрузки, который обрабатывает SSL-соединение, а соединение с вашим сервером приложений фактически осуществляется по HTTP.

Измените 302 (временный) на 301 (постоянный), только когда вы уверены, что он работает нормально, чтобы избежать проблем с кэшированием.

В WordPress вам следует избегать редактирования директив в# BEGIN WordPress раздел, как WordPress будет пытаться перезаписать это при обновлении (если вы не предприняли дополнительные шаги, чтобы заблокировать это).

...