Главное, на что я бы обратил внимание, это то, что вы перенаправляете только на HTTPS для своей платежной страницы . Вы должны использовать HTTPS для всего вашего сайта - везде. В наши дни браузеры предупреждают пользователей о том, что они просматривают небезопасное соединение, если по HTTP (Google Chrome указывает «Незащищенный» рядом с URL), что ничего не делает для доверия пользователя. Это главное, что изменилось бы за последние 5 лет - HTTPS обязателен везде .
Нет веской причины не использовать HTTPS везде в наши дни .
Предполагая, что остальная часть вашего сайта уже готова к HTTPS (я полагаю, что это должно быть, и вы не отправляете пользователей обратно на HTTP со своей страницы оплаты ?!), затем измените перенаправление HTTP на HTTPS на включите весь ваш сайт:
# HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
2) нужно ли мне заняться канонизацией, указав на www or non- www version моего веб-сайта (что важно, не затрагивая одну важную страницу платежей https ); это необходимо?
Да, вы должны. У вас уже есть директивы вверху файла .htaccess
- но они закомментированы? Возможно, вы уже установили элемент rel="canonical"
в заголовке своих страниц, но в противном случае, если www and non- www are оба доступны, то это потенциально дублирующийся контент (такой же контент доступен из 2 или больше разных URL). Вам нужно решить, какие: www or не www? Что вы сейчас предпочитаете? Что (преимущественно) уже проиндексировано? Какой используется ваша страница платежей? (Надеюсь, ответ такой же, как и во всех вышеперечисленных.)
Также перенаправить непосредственно на HTTPS как часть этого перенаправления. И это должно go до текущего перенаправления HTTP на HTTPS (в том же порядке, что и в настоящее время в вашем .htaccess
файле):
# Redirect to non-www
RewriteCond %{HTTP_HOST} !=example.com
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
Обратите внимание, что вышеприведенное www to не - www redirect предполагает, что вы не используете никаких других поддоменов. Чтобы перенаправить на www.example.com
, просто измените оба экземпляра на example.com
.
RewriteCond %{HTTP_REFERER} semalt\.com [NC]
RewriteRule .* – [F]
Хорошо, если это поможет - проверьте журналы вашего сервера, если это что-то делает для вас. Но измените регулярное выражение .*
на ^
(чуть более эффективно). И любые директивы блокировки должны быть в самом верху файла (вы не хотите беспокоиться о канонизации этих запросов).
RewriteCond %{HTTP_REFERER} buttons\-for\-website\.com
RewriteRule ^.* - [F,L]
Опять же - хорошо, это помогает (делает это ?!). Оптимизируйте регулярное выражение, как указано выше. Не нужно backsla sh экранировать буквальные дефисы в CondPattern (если они не появляются в середине класса символов). Флаг L
не требуется при использовании с F
.
Другие примечания:
- Нет необходимости повторять директиву
RewriteEngine On
. - You вам не нужна директива
RewriteBase /
с вашими текущими директивами. - Проще определить ваши
ErrorDocument
s вверху файла.
Сводка
Объединяя вышеперечисленные пункты, мы имеем:
Options +FollowSymlinks
ErrorDocument 404 /404.html
RewriteEngine On
# block visitors referred from semalt.com
RewriteCond %{HTTP_REFERER} semalt\.com [NC]
RewriteRule ^ – [F]
# block referer spam buttons for website
RewriteCond %{HTTP_REFERER} buttons-for-website\.com [NC]
RewriteRule ^ - [F]
# Redirect to non-www
RewriteCond %{HTTP_HOST} !=example.com
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
# HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]