configuração do host virtual apache

configuração do host virtual apache

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

  1. 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

  1. 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

informação relacionada