Как да инсталирам скрипт за лесно пренасочване с помощта на Bluehost

аз имам example.co.uk и example.com имена на домейни. Основният уебсайт е example.co.uk. Имам SSL сертификат за домейна example.co.uk.

Искам .htaccess файл към 301 пренасочва всичко видяно в браузъра към https: без да засяга SEO.

Това означава записи на:

  • example.co.uk
  • example.com
  • www.example.com
  • www.example.co.uk
  • http://example.co.uk
  • http://example.com
  • http://www.example.co.uk
  • http://www.example.com
  • https://example.co.uk
  • https://example.com
  • https://www.example.com

всички биха препратили към https://www.example.co.uk.

Това е сайт с една страница, така че решението от тип "catch-all" ще работи. В идеалния случай бих искал това да работи за сайт с много страници. За да мога да използвам .htaccess код отново в различни проекти.

Измислих следното, но се преобразува .com записи в https://example.com или https://www.example.com след това спира:

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC,OR] RewriteCond %{HTTP_HOST} ^example\.co.uk$ [NC] RewriteRule ^ https://www.example.co.uk%{REQUEST_URI} [L,NE,R] 

  • Нуждаете се от валиден SSL сертификат и за двата домейна, за да пренасочите от https://www.example.com и https://example.com да се example.co.uk независимо дали става въпрос само за пренасочване, това е така, защото всъщност посещавате уебсайт, за да получите пренасочването, а липсата му ще спре потребителя с предупреждение. Можете да използвате Cloudflare, който ще предостави безплатен SSL сертификат и ще пренасочи всички към example.co.uk уебсайт, използващ правила за страници.

Имам SSL сертификат за домейна example.co.uk.

Предполага се, че това също обхваща www поддомейн? (Ще трябва.)

https://example.com https://www.example.com 

Както бе споменато от Саймън в коментари, с цел пренасочване https://example.com ще ви трябва SSL сертификат, който покрива example.com домейн. В противен случай браузърът ще спре при предупреждение за невалиден сертификат. (Възниква SSL ръкостискането преди вашият сървър е в състояние да обработи заявката.)

Измислих следното, но се преобразува .com записи в https://example.com или https://www.example.com след това спира:

Вероятно защото получавате предупреждение за невалиден сертификат?

Тъй като имате множество домейни, може би е по-лесно да се изгради правило, което пренасочва всичко, което е не каноничния домакин, вместо да се опитва положително да съвпада с всичко, което би могло да бъде. Например:

RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !=www.example.co.uk RewriteRule ^ https://www.example.co.uk%{REQUEST_URI} [R,L] 

Това комбинира както HTTPS, така и www канонизацията в едно правило.

The ! префикс на CondPattern отрича израза, така че е успешен, когато не съответства на дадения низ / регулярно изражение. В този случай е успешно, когато домакин не е низът www.example.co.uk. The = префиксът е точно съвпадение (лексикографско сравнение) оператор, така че останалите CondPattern се разглежда като обикновен низ, а не като регулярно изражение.

Имате ли нужда от NE (noescape) флаг? Пропуснахте го при първото правило, така че естествено ще загубите всички специални знаци, които са преминали през тази директива така или иначе.


RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC,OR] RewriteCond %{HTTP_HOST} ^example\.co.uk$ [NC] RewriteRule ^ https://www.example.co.uk%{REQUEST_URI} [L,NE,R] 

Настрана: Тъй като използвате HTTP_HOST в заместване в първия RewriteRule, ако смените реда на тези правила, тогава ще избегнете ненужно второ пренасочване при достъп http://example.co.uk и т.н. Тъй като едва след второто правило знаете, че хостът е канонизиран.

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