it-swarm.com.de

Apache htaccess führt dazu, dass Dateien heruntergeladen und nicht angezeigt werden

Also hatte ich diese "schöne" Website, die genau das tat, was ich wollte. Dann habe ich meinen PC heruntergefahren, neu gestartet und ... die Seiten werden jetzt nur noch heruntergeladen, anstatt angezeigt zu werden.

Ich habe XAMPP neu installiert und Apache erneut gestartet und konnte die Datei . Htaccess als Ursache des Problems identifizieren.

Options +FollowSymlinks
RewriteEngine on 

RewriteCond %{QUERY_STRING} !^desktop
RewriteCond %{HTTP_USER_AGENT} "Android|blackberry|googlebot-mobile|iemobile|iphone|iPod|#opera mobile|palmos|webos" [NC]
RewriteRule ^/?$ /mobile/index [L,R=302]    
RewriteRule ^/?$ /de/index [R]
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

Hier ist das Problem, denke ich:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html

Dies sollte es möglich machen, /de/index anstelle von /de/index.html zu verwenden - aber irgendwie bewirkt es, dass die Seite heruntergeladen wird, wenn ich localhost/de/index öffne (aber mit localhost/de/index.html funktioniert es gut ... ).

Ich verwende HTML-Sites mit SSI-Elementen auf einem Apache-Webserver. Die einzige andere Datei, die sich von den Standarddateien unterscheidet, ist die httpd.conf , in der ich SSI aktiviert habe:

AddType text/html .shtml
AddHandler server-parsed .shtml
AddHandler server-parsed .html
AddHandler server-parsed .htm
Options Indexes FollowSymLinks Includes
AddOutputFilter INCLUDES .shtml
Options +Includes

Ich hoffe, es gibt jemanden unter Ihnen, der mir bei diesem ärgerlichen Problem helfen kann, da ich ziemlich verzweifelt bin ... aus irgendeinem Grund lädt Chrome die Dateien weiterhin herunter (auch wenn ich sie lösche) Die Datei . htaccess , während IE und Opera die Seiten anzeigen.

Bearbeiten: Jetzt möchte Opera auch Dateien herunterladen (ob index.html oder index heißen).

2
chrissik

Browser bieten das Herunterladen von Dateien basierend auf zwei Headern an:

Ich benutze ein Kommandozeilen-Tool namens curl , um die Überschriften auf einer Website zu überprüfen.

curl -s -D - 'http://example.com/' | head -n 20

Wenn Sie nicht möchten, dass Ihre Seiten heruntergeladen werden, muss Content-Type auf text/html oder text/html;charset=UTF-8 gesetzt sein und es darf keine Content-Disposition -Header geben.

Browser bieten an, Seiten als Download zu speichern, wenn der Content-Type -Header etwa so lautet wie application/octet-stream. Ein Download-Dialogfeld wird auch angezeigt, wenn ein Content-Disposition -Header wie attachment; filename=foo.html vorhanden ist.

Sie können den Content-Type im Allgemeinen durch .htaccess steuern, indem Sie die Anweisung AddType wie folgt verwenden:

AddType text/html .html

Ich sehe, dass Sie dies bereits für .shtml Dateien tun. Möglicherweise müssen Sie dasselbe für andere Erweiterungen wie .html und .htm tun.

Dies ist dann der Standardtyp für Dateien mit diesen Erweiterungen. Wenn sie jedoch von einer Webanwendung gesichert werden, kann der Code, der diese Webanwendung ausführt, diese normalerweise überschreiben. Die meisten Webanwendungs-Frameworks verfügen über eine Art Anweisung setHeader, mit der sowohl Content-Type als auch Content-Disposition festgelegt werden können. Zusätzlich zur Überprüfung Ihrer .htaccess -Datei müssen Sie den Code überprüfen, der Ihre Website antreibt.

1