
Ich habe meine Konfigurationsdatei so geändert, dass ein Benutzer, wenn er die Domäne ohne „www“ eingibt, auf die Domäne mit „www“ umgeleitet wird:
server_name example.com; return 301 $scheme://www.example.com$request_uri; Ich wünsche mir auch mein https für alles unter /user
Ich erhalte die Fehlermeldung „Zu viele Weiterleitungen“. Was mache ich falsch?
Also habe ich:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/example.com/site;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location /user {
rewrite ^ https://$http_host$request_uri? permanent;
}
}
Für Port 443:
server {
listen 443;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
root /var/www/example.com/site;
index index.html index.htm;
ssl on;
ssl_certificate //path here
ssl_certificate_key //path here
location / {
rewrite ^ http://$http_host$request_uri? permanent;
}
location /user {
}
}
Antwort1
Der beste Weg hierfür ist, separate server
Blöcke für example.com
und zu haben www.example.com
. Der Eintrag für example.com
solltenurhaben:
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
Der Eintrag für www.example.com
enthält alles andere (und natürlichnichthabe die Weiterleitung).
Ebenso haben Sie zwei separate Servereinträge für https (Port 443).
Antwort2
Ich würde so etwas machen: (ungetestet)
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
server {
listen 80;
server_name www.example.com;
root /var/www/example.com/site;
index index.html index.htm;
location / {
rewrite ^/index.php;
}
}
server {
listen 443;
server_name www.example.com;
root /var/www/example.com/site;
index index.html index.htm;
ssl on;
ssl_certificate //path here
ssl_certificate_key //path here
location /user {
rewrite ^ https://$http_host$request_uri? permanent;
}
}