Каков наилучший способ заставить HTTPS и WWW, но разрешить localhost?

Каков наилучший способ заставить HTTPS и WWW, но разрешить localhost? [Русский]

HTACCESS форсирует HTTPS и WWW, но разрешает localhost

Принудительно использовать HTTPS и WWW по нескольким причинам: заслужить доверие своих посетителей, показав, что соединение безопасно, и, если вы используете поддомен, такой как www, поддерживать согласованность с вашими посетителями и вашими отчетами в вашей дешевой сети хостинг например.

В механизмах отчетности, таких как Google Search Console, может быть сложно создать разные представления для одного и того же сайта и страниц. Один с безопасным HTTPS-соединением, один без, и один с веб-поддоменом www, а другой без, и даже ставший кошмаром, который заставляет вас настраивать фильтр поддоменов Google Analytics для получения согласованных отчетов.

На самом деле есть несколько простых способов гарантировать, что все посетители будут перенаправлены на безопасную HTTPS-версию HTTPS-сайта и веб-субдомена, не влияя на посещения, и его также можно использовать для перенаправления веб-сайта на другой веб-сайт с помощью этого простого и элегантный метод.

И, вдобавок ко всему, и для завершения этого, чтобы убедиться, что поддомен localhost может быть доступен без веб-поддомена или перенаправления на HTTPS, и что страницы, заканчивающиеся косой чертой, будут перенаправлены на обычную страницу, чтобы избежать двойной счет тех же страниц в отчетах.

Давайте избавимся от всех этих дублирующих страниц, которые в конце затруднят правильное агрегирование аналитики:

  • http://mywebsite.com/page

  • http://mywebsite.com/page/

  • https://mywebsite.com/page

  • https://mywebsite.com/page/

  • http://www.mywebsite.com/page

  • http://www.mywebsite.com/page/

  • https://www.mywebsite.com/page

  • https://www.mywebsite.com/page/

  • Все это будет сделано путем обновления файла .Htaccess, который является скрытым файлом, используемым на серверах Apache, обычно хранящимся в корневой папке сайта.

Страница перенаправления, заканчивающаяся косой чертой

Чтобы удалить косую черту из URL-адреса, заканчивающегося одним из них, и чтобы запросы перенаправлялись на стандартную страницу без косой черты, просто сопоставьте URL-адреса, начинающиеся и заканчивающиеся косой чертой, убедитесь, что это не запрашиваемый каталог, и перенаправьте на весь URI запроса без конечной косой черты.

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

Затем нам также потребуется дополнительный фрагмент кода, чтобы убедиться, что любой запрос к каталогу заканчивается косой чертой, так как обычные URL-адреса каталогов веб-сайтов заканчиваются одним из них.

# Remove trailing slash from non-filepath urls
RewriteCond %{REQUEST_URI} /(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://www.mywebsite.com/%1 [R=301,L]
# Include trailing slash on directory
RewriteCond %{REQUEST_URI} !(.+)/$
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ https://www.mywebsite.com/$1/ [R=301,L]

HTACCESS форсирует HTTPS и форсирует WWW Htaccess

Теперь, когда проблема с окончательной косой чертой решена, давайте сосредоточимся на отсутствующем HTTPS или недостающем веб-поддомене, который может произойти, с помощью Htaccess перенаправит http на https с принудительным использованием www.

Самый простой и самый стильный способ сделать это - идентифицировать их обоих в одном и том же состоянии Htaccess.

Это легко сделать, сопоставив URL-адреса, не начинающиеся с веб-субдомена, или любой запрос, не включающий HTTPS, и перенаправив правильный URL-адрес нашего веб-сайта, который включает как защищенное соединение, так и веб-субдомен www.

# HTACCESS force HTTPS and force WWW htaccess 
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{https} off
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]

Принудительно использовать HTTPS и WWW, но разрешить localhost

Теперь это все хорошо, но что происходит, когда мы на самом деле пытаемся попасть на наш Веб-сайт в режиме разработки на локальном сервере XAMPP, но все наши запросы на http: // localhost теперь перенаправляются на https://www.mysite.com - наша производственная версия?

Хорошо, решение состоит в том, чтобы повторно использовать предыдущий фрагмент кода, который обеспечивает HTTPS и WWW-версию URL-запроса, но запустить его, исключив из проверочных запросов, адресованных либо локальному хосту, либо нашему локальному IP-адресу, который является 127.0.0.1.

И все, теперь у нас есть прекрасный кусок кода, который решит все наши проблемы!

# HTACCESS force HTTPS and force WWW htaccess 
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{https} off
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]

Перенаправить HTTP на HTTPS Htaccess, принудительно ввести WWW и удалить завершающий слеш

Весь фрагмент кода ниже можно использовать в файле HTACCESS для достижения следующих целей:

Перенаправить HTTP на HTTPS в htacces,

Заставить WWW в Htaccess,

Удалить конечный слеш в URL.

Конечно, не забудьте изменить URL веб-сайта для того, который обращается к вам.

Его даже можно использовать для перенаправления веб-сайта на другой веб-сайт, просто изменив целевые URL-адреса на ваш другой лучший дешевый веб-хостинг:

#--------------------------------------------------
# Force WWW htaccess : /
#--------------------------------------------------
#### Force HTTPS://WWW and remove trailing / from files ####
## Turn on rewrite engine
RewriteEngine on

# Remove trailing slash from non-filepath urls
RewriteCond %{REQUEST_URI} /(.+)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://www.mywebsite.com/%1 [R=301,L]

# Include trailing slash on directory
RewriteCond %{REQUEST_URI} !(.+)/$
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)$ https://www.mywebsite.com/$1/ [R=301,L]

# HTACCESS force HTTPS and force WWW htaccess
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [OR,NC]
RewriteCond %{https} off
RewriteRule ^(.*)$ https://www.mywebsite.com/$1 [R=301,L]

Фотогалерея

Похожие статьи


Комментарии (0)

Оставить комментарий

Увеличьте доход от рекламы на 50-250% с помощью Ezoic. Сертифицированный издательский партнер Google.
Увеличьте доход от рекламы на 50-250% с помощью Ezoic. Сертифицированный издательский партнер Google.
 
Увеличьте доход от рекламы на 50-250% с помощью Ezoic. Сертифицированный издательский партнер Google.
Увеличьте доход от рекламы на 50-250% с помощью Ezoic. Сертифицированный издательский партнер Google.