Por acaso já te aconteceu, quando escreves um domínio (muitos websites de bancos cá têm esse problema) sem o www no início, a página falha? Porquê? Falta uma regra de reecaminhamento para o endereço correcto, o que pode acabar com muitos problemas de acesso a um website. É algo muito simples de fazer (mas deixe para um administrador de sistemas).
Mas primeiro…
Porquê usar www?#
Alguns websites excluem o uso do www, preferindo apenas o nome do domínio (ex: meuwebsite.com
). Embora não está errado, mais tarde isto pode causar problemas.
Se por alguma razão, o registo do website for ou alterar para CNAME, os registos MX deixarão de funcionar correctamente, pois entram em conflito. Dai a adopção do subdomínio www como porta de entrada para um website. Dessa maneira, não afectará os restantes registos (excepto se também forem criados registos no sub-domino www que causem conflito, pelo que não é recomendável**).**
Como automatizar#
Existem plataformas de gestão web que facilitam esse trabalho, mas o que vamos exemplificar aqui é feito pelo ficheiro de configuração. Primeiro, é importante ter-se um registo A no domínio a apontar para o servidor e um registo A ou CNAME (dependendo da configuração) com o registo www apontando igualmente para o mesmo sítio.
O exemplo abaixo não só reencaminhará o meuwebiste.com
→ www.meuwebsite.com
, como também reencaminhará para uma ligação segura http://meuwebsite.com
→ https://www.meuwebsite.com
.
Apache (.htaccess)#
# Forçar https
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
# RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[\w-]+$
# RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# </IfModule>
# Forçar 'www.'
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^ - [E=PROTO:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^ - [E=PROTO:http]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{SERVER_ADDR} !=127.0.0.1
RewriteCond %{SERVER_ADDR} !=::1
RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
IIS (web.config)#
<rule name="https" stopProcessing="true">
<match url=".*$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTPS}" pattern="^OFF$" />
<add input="{HTTP_HOST}" pattern="dev" negate="true" />
</conditions>
<action type="Redirect" url="https://www.meuwebiste.com{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
<rule name="www" stopProcessing="true">
<match url=".*$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="www" negate="true" />
<add input="{HTTP_HOST}" pattern="dev" negate="true" />
</conditions>
<action type="Redirect" url="https://www.meuwebiste.com{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
Nginx (nginx.conf)#
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.meuwebsite.com;
...
}
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name meuwebsite.com;
return 301 https://www.$server_name$request_uri;
}