Я недавно перешел на https с http, и у меня есть цепочка перенаправления, которая появляется в сафари, замедляя время загрузки моего сайта.
Я провел несколько дней с bluehost, и, похоже, никто не знает / не хочет помочь переписать файл .htaccess, это также, возможно, не их работа, так что достаточно честно. Я сам провел несколько часов, и теперь у меня есть приблизительное понимание, но все же мне нужна небольшая помощь.
Мой предпочтительный домен - https://jambarteambuilding.com
цепочка переадресации в сафари http://www.jambarteambuilding.com затем к https://www.jambarteambuilding.com затем к https://jambarteambuilding.com
Я стремлюсь к
http://www.jambarteambuilding.com
http://jambarteambuilding.com
https://www.jambarteambuilding.com
все перенаправить на
https://jambarteambuilding.com
также.
Мой веб-сайт и установка WordPress находятся в подкаталоге под названием «clean». Итак, public_html / clean, где вы найдете wp-admin, wp-content, wp-includes.
мой файл .htaccess написан так, что если вы наберете jambarteambuilding.com, веб-сайт загрузится из чистого, но вы не увидите jambarteambuilding.com/clean только в URL-адресе jambarteambuilding.com (что я предпочитаю).
Так
Это мой текущий файл .htaccess.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?jambarteambuilding.com$
RewriteCond %{REQUEST_URI} !^/clean/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /clean/$1
RewriteCond %{HTTP_HOST} ^(www.)?jambarteambuilding.com$
RewriteRule ^(/)?$ clean/index.php [L]
Я считаю, что мне нужно написать оператор [OR] после строки 2, чтобы захватить https://www.jambarteambuilding.com в условиях.
[NC] отсутствует в строках 2 и 7
R = 301, похоже, отсутствует в строках 6 и 8
строки 2 и 7 кажутся дублированными.
jambarteambuilding.com должен быть jambarteambuilding.com
Я предполагаю, что (www.)? означает "с www или без"
Может ли кто-нибудь легко помочь мне переписать это!

От этот вопрос. Что-то вроде этого должно работать ...
RewriteCond %{HTTPS} off
RewriteCond %{HTTPS_HOST} !^jambarteambuilding.com$ [NC]
RewriteRule ^(.*)$ https://jambarteambuilding.com/$1 [L,R=301]
Или, если вы можете изменить файл Apache VirtualHost, это будет лучше ...
<VirtualHost *:80>
ServerName jambarteambuilding.com
ServerAlias www.jambarteambuilding.com
Redirect / https://jambarteambuilding.com/
</VirtualHost>
<VirtualHost *:443>
ServerName jambarteambuilding.com
ServerAlias www.jambarteambuilding.com
# ... SSL configuration goes here
</VirtualHost>
Я бы посоветовал попробовать поставить 3 новые строки в начале после RewriteEngine on, а затем удалить все имеющиеся у вас строки, в которых упоминается %{HTTP_HOST}. Метод VirtualHost не является обязательным, но для всех, кто занимается администрированием Apache, это рекомендуемый способ. Не волнуйтесь, если у вас нет доступа по SSH.
хорошо спасибо. Я добавил резюме к вашему исходному сообщению. Выглядит правильно?
Я не вижу редактирования, но я бы посоветовал сделать резервную копию вашего .htaccess и попробовать. Если что-то пойдет не так, вы всегда можете вернуться к исходному .htaccess.
Это решило это!
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTPS_HOST} !^jambarteambuilding.com$ [NC]
RewriteRule ^(.*)$ https://jambarteambuilding.com/$1 [L,R=301]
RewriteCond %{REQUEST_URI} !^/clean/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /clean/$1
RewriteRule ^(/)?$ clean/index.php [L]
Спасибо всем!
Спасибо за ответ. Мне придется искать виртуальный хост apache, это не то, на что я смотрел раньше. Для второй перезаписи, будут ли эти 3 строки в дополнение к другим 8?