2012-08-14 5 views
29

ドメイン名にindex.htmlを設定する方法。 https://www.example.com/ - ユーザをルートディレクトリのindex.htmlに誘導します。Nginxでindex.htmlをルートファイルとして設定するには?

のように私は別のものを試してみた:何が私を助けていない

server { 
    # some configs 

    location =/{ 
      index index.html; 
      fastcgi_index index.html; 
    } 
or 
    location/{ 
      index index.html; 
      fastcgi_index index.html; 
    } 

} 

locationキーワードを持つ他の設定がありますが、私もコメントしています。 server {句の

その他の "場所" のconfigs:

location ~ .*(css|htc|js|bmp|jp?g|gif|ico|cur|png|swf|htm?|html)$ { 
     access_log off; 
     root $www_root; 
} 

location ~ \.php$ 
{ 
     include       /etc/nginx/fastcgi_params; 
     index       index.html; 
     fastcgi_index     index.html; 
     fastcgi_param SCRIPT_FILENAME $www_root$fastcgi_script_name; 
     fastcgi_param QUERY_STRING  $query_string; 
     fastcgi_param PATH_INFO   $fastcgi_path_info; 
     fastcgi_pass     127.0.0.1:9000; 
     # Директива определяет что ответы FastCGI-сервера с кодом больше или равные 400 
     # перенаправлять на обработку nginx'у с помощью директивы error_page 
     fastcgi_intercept_errors  on; 
     break; 
} 

location ~ /\.ht { 
    deny all; 
} 

すべてのそれらのコメントとコメントのない、何も助けませんでした。

PSエディションは/etc/nginx/sites-enabled/domainname.comファイルで作成されました。お住まいの地域ブロックで

root /srv/www/ducklington.org/public_html; 

答えて

15

答えは、位置指令にルートディレクトリを配置することであると、ファイルを探すためにngingx教えてくれます

location/{ 
    try_files $uri $uri/index.html; 
} 

正確な名前が最初に与えられ、そのようなファイルが見つからない場合、uri/index.htmlを試します。だから、https://www.example.com/の要求は、それが最初の正確なファイル一致するものを探し、それがその後、指定された順序で文書によると をチェックし、ファイルの存在のindex.html

+0

'完璧に動作しますindex.html':ちょうどserver {ブロックに追加します。それはまったく重要ではありません。それはファイルシステム上のファイルの単なる名前です。 –

30

を行うことができます:

+1

フォルダにindex.htmlが含まれていないと無限ループになります。 –

+2

これはベストプラクティスなのかどうか分かりません。探しているファイルやディレクトリが見つからない場合は、実際にはインデックスではなく404を返すべきです。 –

+0

ディレクトリ名の場合にのみインデックスを返します。そうでなければ、 \ index.htmlを探して、そこには存在しないので、404を返します。 – cobaco

4

をチェックし、使用していますでしょう見つけることではないでしょう、それを来る場合リクエスト処理のために最初に見つかったファイル。処理は現在のコンテキストで実行されます。ファイルへのパスは、ルートおよび別名ディレクティブに従ってfileパラメータから作成されます。名前の末尾にスラッシュを指定することで、ディレクトリの存在を確認することができます。 "$ uri /"いずれのファイルも見つからなかった場合は、最後のパラメータで指定されたURIへの内部リダイレクトが行われます。重要

最後のパラメータで指定されたURIへの内部リダイレクトは です。

したがって、最初の2つのパラメータがfalseを返す場合は、最後のパラメータでページまたはコードを追加する必要があります。

location/{ 
    try_files $uri $uri/index.html index.html; 
} 
+0

これは404とどうやって動作しますか? –

+0

try_filesの後にファイルをチェックします - ファイルが見つからなかった場合は、最後のパラメータで指定されたuriへの内部リダイレクトが行われます。すべてのファイルが見つからない場合は、最後の引数として指定する必要がある場合は、404コードページを表示する場合。 場所/ { try_files $ uri $ uri/index.html $ uri.html = 404; } – Nokors

関連する問題