Я использовал:
RedirectMatch /(.*) https://www.website.com/$1
для принудительного перенаправления с виртуального хоста 80 на 443 в apache.
Я считаю, что имеет смысл захватить все, что пользователь вставляет, и напрямую перевести на https. Тем не менее, я также видел, что это используется довольно часто:
Redirect permanent / https://www.website.com/
Который я не использовал, потому что предполагаю, что это не будет точным переводом адреса, введенного пользователем, на https.
Какой из них лучше всего для принудительного шифрования всего сайта вместе с использованием строгой транспортной безопасности?
Либо Redirect, либо RedirectMatch может быть 301 или 302, в зависимости от того, как вы его вызываете, так что это не разница между ними.
РАЗЛИЧИЯ И ЗНАЧЕНИЕ:
В разница в том, что Redirect
соответствует только простому URL-PATH, а RedirectMatch
позволяет использовать сопоставление с образцом регулярного выражения.
Кроме того, 301 - это постоянный перенаправить, а 302 - это временный перенаправить.
В ПОИСКАХ ГОДОТА
Чтобы сохранить рейтинг в поисковых системах, вы всегда должны использовать 301 редирект. В идеале для SEO вам нужна согласованность протокола и полного доменного имени, поэтому это выходит далеко за рамки простого обеспечения SSL / TLS.
Допустим, ваш "полный" URL для вашей домашней страницы:
https://www.example.com/index.php
Хотя у вас может быть сервер, который не чувствителен к регистру и который является псевдонимом для всех поддоменов корневого домена, и который будет использовать индекс файла, если он не указан в пути, так что вы попадете в то же место, введя только example.com в поле местоположения браузера. Хотя это, безусловно, упрощает пользователю ввод текста, просто example.com
это создает потенциальные проблемы для SEO. Если так настроен ваш сервер, то ВСЕ эти URL-адреса относятся к одному и тому же содержимому:
https://www.example.com/index.php
https://www.example.com/index
https://www.example.com/
https://example.com/index.php
https://example.com/index
https://example.com/
http://www.example.com/index.php
http://www.example.com/index
http://www.example.com/
http://example.com/index.php
http://example.com/index
http://example.com/
Но даже если ваш сервер может думать, что все они одинаковы, и обслуживаемый контент идентичен, Google считает их все уникальными URL, и когда они определят, что эти 12 URL содержат дублированный контент, вы будете оштрафованы в рейтинге поиска.
И недостаточно просто убедиться, что все ваши внутренние ссылки указаны в качестве предпочтительного URL-адреса - какой-нибудь фанат вашего сайта, несомненно, опубликует ссылку и напишет ссылку как http://example.com
когда ты предпочитаешь https://www.example.com
так что вам нужно, чтобы Google знал, что http://example.com
следует интерпретировать так, как вы предпочитаете, и способ сделать это - ПОСТОЯННЫЕ перенаправления.
Теперь вы можете сделать Redirect
или RedirectMatch
постоянный (301) просто добавив 301 в строку:
Redirect 301 /here/ https:www.example.com/there/
RedirectMatch 301 /here/(.*) https:www.example.com/there/$1
Также для постоянного перенаправления эти варианты:
Redirect 301
Redirect Permanent
RedirectPermanent
все означают одно и то же.
РОЗА - это не роза, это не роза, это не роза
Я даже не касался концевых слэшей и чувствительности к регистру в каталогах или параметрах, но это тоже имеет значение. Единственный раз, когда Google не заботится о регистре или конце косой черты, - это корневой домен.
Все они идентичны Google:
www.MyFunDomain.com/
www.MyFunDomain.com
www.myfundomain.com/
www.myfundomain.com
WWW.MyFuNdOmAiN.COM
Это потому, что спецификация для доменные имена нечувствителен к регистру. Но эти:
example.com/MyPath/
example.com/MyPath
example.com/mypath/
example.com/mypath
example.com/mYpAtH
Все считаются РАЗНЫЕ даже если ваша система или сервер считает их одинаковыми. Хотя завершающие косые черты не требуются в TLD, они ОБЯЗАТЕЛЬНЫ для всех путей. le.com/mypath/
подразумевает le.com/mypath/index.html
и le.com/mypath
подразумевает le.com/mypath.html
.
ЛУЧШИЕ ПРАКТИКИ
Решение этого:
1) Сделайте стандарт дома, чтобы все пути и имена файлов были в нижнем регистре ТОЛЬКО.
2) Настройте правила перезаписи, чтобы сделать постоянное перенаправление 301 для всех вариантов схемы, поддомена, косой черты в конце пути и расширения файла.
Потому что возможности практически безграничны, и Redirect
требует путей с учетом регистра, RedirectMatch
или Rewrite
являются лучшим выбором, так что все возможные варианты:
https://www.example.com/sitepath/
точно так же показывается сканерам Google, а не
http://example.com/SitePath/index.php
Я не собираюсь публиковать конкретный пример правила перезаписи, потому что существует слишком много переменных (включая проблемы HSTS) и способов создания проблем. Вместо этого я отсылаю вас к Дэна Морелла довольно отличные уроки для НЕ HSTS места и отдельный ссылка на сайт для HSTS места.
В Redirect
будет точный перевод. Как написано Redirect
является предпочтительным, потому что он отправляет код состояния HTTP 302, тогда как RedirectMatch
отправляет 301.