Apache-Konfiguration für virtuellen Host

Apache-Konfiguration für virtuellen Host

Hallo, ich versuche sicherzustellen, dass auf meine Website nur über https und nur über die Subdomäne www zugegriffen werden kann. Derzeit verwende ich die folgende virtuelle Apache-Hostkonfiguration:

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

ich fürchte, meine Kenntnisse über reguläre Ausdrücke sind eher begrenzt und ich frage mich, ob dies der beste Weg ist, dies zu erreichen?

Danke

Antwort1

  1. Ersetzen Sie einfach

    # 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]
    

Von

    # Redirect http requests to https
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !=www.example.com
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R,L]

Auf diese Weise wird der gesamte HTTP-Verkehr auf HTTPS umgeleitet, außerhttp://example.comAnfragen

  1. Entfernen Sie dann diese Zeile aus Ihrer https-Konfiguration:

    # 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]
    

also bleib einfach

    RewriteCond %{SERVER_NAME} !=www.example.com
    RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,NC,L]

welche Weiterleitunghttps://example.comZuhttps://www.example.com

Antwort2

%{SERVER_ADDR}könnte auch funktionieren, um IP neu zu schreiben

bearbeiten:

Es tut uns leid, aber Sie können auf der rechten Seite des Ausdrucks keine Variablen verwenden.

Versuchen Sie so etwas:

RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1

Oder wenn Sie es nicht dynamisch machen

RewriteCond %{SERVER_NAME} !192.168.1.1

verwandte Informationen