.htaccess код вопросы о SSL и канонизации - PullRequest
1 голос
/ 27 января 2020

Короче говоря, на моем сайте есть страница с однократными платежами. SSL-сертификат установлен, но не требуется отдельно для этой одной страницы платежей.

Что касается моего файла .htaccess - в настоящее время я разделяю свою страницу платежей с помощью следующего кода. Я также блокирую посетителей от semalt.com. Не могу точно вспомнить, почему, но я думаю, что в то время я получал от них нежелательное внимание (спам).

Что я хотел бы знать, это:

  1. - это код все еще действителен в течение 5 лет?
  2. нужно ли мне заняться канонизацией, указав один из www or не www version моего веб-сайта (что важно, не затрагивая одну важную страницу платежей https); это необходимо?
 1. Options +FollowSymlinks
 2. RewriteEngine On
 3. RewriteBase /
 4. # RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
 5. # RewriteRule .* http://example.com%{REQUEST_URI} [L,R=301]
 6. 
 7. RewriteCond %{HTTPS} off
 8. RewriteRule ^payment\.html$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 9. 
 10. # block visitors referred from semalt.com
 11. RewriteEngine on
 12. RewriteCond %{HTTP_REFERER} semalt\.com [NC]
 13. RewriteRule .* – [F]
 14. # End semalt block
 15. # block referer spam buttons for website
 16. RewriteEngine On
 17. RewriteCond %{HTTP_REFERER} buttons\-for\-website\.com
 18. RewriteRule ^.* - [F,L]
 19. # End buttons for website block
 20. 
 21. ErrorDocument 404 /404.html

1 Ответ

0 голосов
/ 28 января 2020

Главное, на что я бы обратил внимание, это то, что вы перенаправляете только на 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]
...