...does not like more than one
RewriteRule
.
Esse requisito é incomum. Provavelmente está reclamando sobre os múltiplos redirecionamentos ao solicitar http://example.com
, em vez de literalmente o número de RewriteRule
diretivas?
Isso pode ser resolvido ao redirecionar para o URL canônico na primeira diretiva RewriteRule
. Então, ao invés de:
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Você escreveria:
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
Ou, para manter esse "genérico", sem incluir explicitamente o nome de domínio no RewriteRule
, tente o seguinte:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.?$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]
Único RewriteRule
Você pode estender o código acima para criar um único RewriteRule
para a canonização HTTPS e www. Tente o seguinte:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.?$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]
Para todas as solicitações que são HTTP ou , não inicie www
, em seguida, redirecione para o URL canônico. A terceira diretiva RewriteCond
é necessária para capturar o domínio (menos um prefixo www.
opcional) do host. O %1
é uma referência anterior ao último CondPattern correspondente. %código%. Se você simplesmente codificou o nome do host canônico na (.+)
substituição , você não precisaria dessa terceira condição.