2017-05-27 5 views
1

Ich möchte das Nginx-Echo-Modul testen. Und ich möchte die URL von dem, was ich in Browser eingeben.Warum Anfrage ohne Suffix der Dateinamenserweiterung html wird Datei herunterladen?

Meine nginx Konfiguration:

index index.php index.html index.htm index.nginx-debian.html ; 

    location/{    
     try_files $uri $uri/ /index.php =404;    
    } 
    location /hello { 
    echo $request_uri; 
    } 

Eingabe url: http://127.0.0.1/hello/.

Rückkehr: eine Datei zurück und den Dateiinhalt haben: /hello/


Eingang url: http://127.0.0.1/hello/hi

Rückkehr: Rückkehr eine Datei und die Datei Inhalt: /hello/hi


Eingabe url: http://127.0.0.1/hello/hi.html

Rückkehr: Druck/hello/hi.html in Browser.


Meine Frage: Warum die URL ohne den HTML-Suffix wird Download-Datei werden? Wie es zu beheben? Ich möchte nur die URL in Browser drucken.

Antwort

3

nginx bestimmt die Content-Type von der Erweiterung. Diese sind in einer Datei mit der Bezeichnung mime-types enthalten. Sie können dieses Verhalten überschreiben, indem Sie eine default-type Direktive in den location Block setzen. Zum Beispiel:

Weitere Informationen finden Sie unter this doucument.

1

Ob Browser die Seite/Download-Datei hängt schließlich von anderen Faktoren ab, zum Beispiel machen würde, 'Content-type'/'Content-Disposition' in HTTP-Header

Content-Disposition takes one of two values, `inline' and 
`attachment'. `Inline' indicates that the entity should be 
immediately displayed to the user, whereas `attachment' means that 
the user should take additional action to view the entity. 

Sie überprüfen können und die HTTP-Antworten vergleichen, wenn Besuch/hallo/hallo oder /hello/hi.html, um zu prüfen, dass mindestens einer dieser beiden Header möglicherweise nicht richtig gesetzt ist, in diesem Fall ist es möglicherweise Content-Typ ist nicht "Text/html" hier

Eine Lösung wäre Wenn Sie den Inhaltstyp für Ihren Pfad angeben, kann dies wie folgt aussehen:

location /hello { 
    default_type "text/html"; 
    echo $request_uri; 
} 

oder

location /hello { 
    add_header Content-Type 'text/javascript;charset=utf-8'; 
    echo $request_uri; 
}