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