2017-06-30 24 views
0

メンテナンスページを提供しようとしています。だから私はtry_filesを試してみて、いつもmaintenance.htmlに仕えます。urlの拡張子が.htmlの場合、Nginxはリダイレクトしません

URLがapp.amazing.comまたはapp.amazing.com/[a-z0-9]*ようなもののようですが、できるだけ早く、HTMLの拡張機能がありますように、nginxのはまさにこのファイル(exemple:app.amazing.com/test.html)を提供するためにしようとする場合にはうまく機能し、そうでない場合は404を返します。存在する。

server { 
    listen [::]:443; 
    listen 443; 

    server_name app.amazing.com; 
    root /var/www/front/public; 
    include /etc/nginx/conf.d/expires.conf; 

    charset utf-8; 

    location/{ 
     try_files /maintenance.html =404; 
    } 
} 

私はまた、そのような書き換えを試してみました:

location/{ 
     rewrite (.*) /maintenance.html break; 
} 

私もこのif-based solutionを試してみましたが、何も動作していないようにみえます。私は何か見落としてますか?

答えて

1

UPDATE:テストされ、作業は

server { 
    listen [::]:443; 
    listen 443; 

    server_name app.amazing.com; 
    root /var/www/front/public; 
    include /etc/nginx/conf.d/expires.conf; 

    charset utf-8; 

    set $maintenance on; 
    if ($uri ~* \.(ico|css|js|gif|jpe?g|png|html)(\?[0-9]+)?) { 
     set $maintenance off; 
    } 
    if ($maintenance = on) { 
     return 503; 
    } 
    error_page 503 @maintenance; 
    location @maintenance { 
     rewrite ^(.*)$ /maintenance.html break; 
    } 
    location/{ 
     # here hoes your usual location/rules 
     try_files $uri $uri/ =404; 
    } 

} 

このように、503に404のコードを変更してください:

server { 
    listen [::]:443; 
    listen 443; 

    server_name app.amazing.com; 
    root /var/www/front/public; 
    include /etc/nginx/conf.d/expires.conf; 

    charset utf-8; 

    location/{ 
     try_files $uri $uri/ =404; 
    } 
} 

404が見つからない=

UPDATE: 302 =一時的なリダイレクト

+0

503はリダイレクトされません。代わりに3XXを使用する必要があります。 – diarpi

+0

訂正のために@diarpiに感謝します。 –

+0

私は '= 404'は' maintenance.html'が存在しなかった場合のためだと思いました。しかし、リダイレクトの方がより正確です。とにかく、 'app.amazing.com/test.html'と入力しても404が返ってくるという事実は変わりません。 – Buzut

関連する問題