Я создал свое приложение WordPress на OpenShift, и оно отвечает на URL-адрес blog-porta8080.rhcloud.com.
Я создал 2 псевдонима на OpenShift
Я купил свой домен (porta8080.com.br) у бразильского регистратора, который не позволяет мне добавлять записи CNAME без субдомена, такого как www.
Поэтому я создал учетную запись на CloudFlare, зарегистрировал свой домен и перенес свой домен на DNS-серверы CloudFlare.
Затем я добавил 2 записи CNAME в CloudFlare
Я даже установил плагин CloudFlare, который, как они говорят, поможет мне
https://wordpress.org/plugins/cloudflare/
Но когда я иду в http://porta8080.com.br не удается загрузить страницу из-за ошибки цикла перенаправления. Я тестировал на Chrome и Firefox, и оба выдает ту же ошибку. Chrome говорит «ERR_TOO_MANY_REDIRECTS» и, проверяя запросы, выдает мне несколько «301 ошибка: перемещено навсегда»
Страница wp-admin не дает мне ошибки. Единственное, о чем я могу думать — это собственный файл .htaccess.
Это мой .htaccess (тот, что в Openshift, вероятно, без blog/
частей, я просто изменил постоянную ссылку в обеих, и это в результате .htaccess на моей машине)
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
Есть идеи?
@Редактировать
Есть проблема на моем .htaccess наверняка. Я прокомментировал это и поместил сообщение в индексный файл, и он попадает туда как по www, так и без него.
Догадаешься почему?
Это интересная проблема, когда вы используете опцию Flexible SSL CloudFlare вместе с WordPress. WordPress, в своей основе, имеет is_ssl
функция, которая не учитывает обратные прокси. Поэтому при перенаправлении на SSL вы можете получить цикл перенаправления при использовании Flexible SSL.
Самый простой способ исправить это установить Mod_cloudflare на апач.
Вместо этого вы можете добавить оператор if в файл wp-config.php для решения этой проблемы:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}
Если вы используете этот метод вместо установки Mod_cloudflare, убедитесь, что вы используете заголовок «X-Forwarded-Proto» вместо SSL для любых перенаправлений.
Других решений пока нет …