
oi, estou tentando garantir que meu site seja acessado apenas via https e somente através do subdomínio www. Atualmente, estou usando a seguinte configuração de host virtual do Apache:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=permanent,L]
#..
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName example.com
ServerAlias www.example.com
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]
<Directory /home/{apacheuser}/www>
SSLRequireSSL
Order allow,deny
Allow from all
LimitRequestBody 512000
</Directory>
#..
</VirtualHost>
Receio que meu conhecimento sobre regex seja bastante limitado e estou me perguntando se esta é a melhor maneira de conseguir isso?
obrigado
Responder1
Basta substituir
# Redirect http requests to https RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L] RewriteCond %{HTTP_HOST} !=www.example.com RewriteRule .* https://www.example.com%{REQUEST_URI} [R=permanent,L]
Por
# Redirect http requests to https
RewriteEngine On
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]
Assim, todo o tráfego http será redirecionado para https, excetohttp://exemplo.comsolicitações de
Em seguida, remova essa linha da sua configuração https:
# Redirect http requests to https RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L] RewriteCond %{HTTP_HOST} !=www.example.com RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
então apenas mantenha
RewriteCond %{SERVER_NAME} !=www.example.com
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]
que redirecionahttps://example.comparahttps://www.exemplo.com
Responder2
%{SERVER_ADDR}
pode servir para reescrever o IP também
editar:
Desculpe, você não pode usar variáveis no lado direito da expressão.
Tente algo assim:
RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1
Ou se você não fizer isso de maneira dinâmica
RewriteCond %{SERVER_NAME} !192.168.1.1