Първична ръка ACSS Aurora 1-6x LPVO (Gen 3) - най-добрата бюджетна оптика на пазара? - Най-добър LPVO прицел

Бих искал да пренасоча не-https и не-www версиите на моя домейн към https и www версията му. Малко съм объркан от опциите. Равни ли са тези правила за пренасочване за моята цел?

# REDIRECT (non-HTTPS or non-WWW) TO HTTPS and WWW RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] # Are the following 3 rules equal in effect? RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301] RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] RewriteRule ^(.*)$ https://www.%{HTTP_HOST}{REQUEST_URI} [R=301,L] 

Кой да използвам?

  • 1 Много по-просто: RedirectPermanent / https://www.example.com в www.example.com:80 VirtualHost блок. mod_rewrite е чудесен инструмент, но твърде много за прости пренасочвания.
  1. RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301] 2. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 3. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}{REQUEST_URI} [R=301,L]

Тези 3 правила по същество са едни и същи и ще вършат една и съща работа в повечето ситуации, но # 1 е безспорно "по-добър", тъй като канонизира FQDN (където името на хоста завършва на точка) и следователно ще бъде предпочитаната версия. (Ако приемем, че нямате други директиви, които правят това.)

В .htaccess контекст, където .htaccess файлът се намира в корена на документа, след което # 2 и # 3 са идентични. (Въпреки това, в a сървър или виртуален хост context тогава # 2 е технически неправилен, тъй като би довел до двойна наклонена черта след името на хоста.)

Ако .htaccess се намира в поддиректория, тогава правило # 2 няма да е правилно, тъй като ще пропусне поддиректорията от пренасочването. Или # 1 или # 3 (тази употреба REQUEST_URI) ще се изисква тук.

И трите версии (заедно с RewriteCond директива) предполагаме, че нямате други поддомейни, тъй като нещо различно от www. се пренасочва.

  1. RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
  • Няма нужда от улавяне на подпатерн (обозначен със заобикалящите скоби) в регулярното изражение, ако няма обратна препратка (напр. $1) в заместване. Използвате REQUEST_URI вместо това сървърна променлива.
  • Регулярният израз .* може също така да бъде опростена и направена по-ефективна, тъй като не е необходимо да съвпадате с нищо, а просто трябва да бъдете успешен за всичко. Регулярният израз .* обхожда целия URL-път и съвпада с всичко. Докато регекс като ^ просто утвърждава началото на низа, така че веднага е успешен, без всъщност да съвпада с нищо.
  • Редът на флаговете L и R няма значение. За последователност обаче винаги включвам L (last) флаг последен.

С други думи:

RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L] 
  • 1 Наистина оценявам усилията да ни помогнат да се учим, отколкото просто да предоставим решение.

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?