
ユーザーが www なしでドメインを入力すると www のあるドメインにリダイレクトされるように conf ファイルを変更しました。
server_name example.com; return 301 $scheme://www.example.com$request_uri; /user以下のすべてにhttpsを希望します
リダイレクトが多すぎるというエラーが表示されますが、どこが間違っているのでしょうか?
ので、私は持っています:
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;
}
}
ポート 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 {
}
}
答え1
これを実現する最良の方法は、とserver
を別々のブロックにすることです。 のエントリはexample.com
www.example.com
example.com
のみ持っている:
server {
listen 80;
server_name example.com;
return 301 http://www.example.com$request_uri;
}
のエントリには、www.example.com
他のすべて(そして明らかにないリダイレクトがあります。
同様に、https (ポート 443) にも 2 つの個別のサーバー エントリがあります。
答え2
私は次のようにします: (未テスト)
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;
}
}