Принудительно использовать https для www и добавить конечную косую черту ко всем url-адресам

Я пытаюсь избежать множественных перенаправлений. Моя текущая установка включает следующее:

       RewriteCond %{HTTP_HOST} ^example.com [NC]
       RewriteRule ^\/?(.*)$ https://www.example.com/$1[R=301,L]
       RewriteCond %{HTTP:X-Forwarded-Proto} =http
       RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
       RewriteCond %{REQUEST_URI} /+[^\.]+$
       RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

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

Вышеуказанное заставляет URL-адреса проходить через два перенаправления.

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

Спасибо

0
0
178
1

Ответы 1

От https://simonecarletti.com/blog/2016/08/redirect-domain-http-https-www-apache/ ответ выглядит следующим образом:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]

Перед каждым правилом можно указать несколько условий.

В качестве альтернативы просто измените флаг [L] в ваших существующих RewriteRules на [N], чтобы обработать все ваши правила за один раз.

Спасибо! Мне также нужна косая черта для всех URL-адресов. Похоже, этого не происходит.

Maria Nichol 10.08.2018 15:56

Другие вопросы по теме