2015-03-12 17:58:34 +01:00
# .htaccess-Ausschnitte
Eine Sammlung nützlicher .htaccess-Ausschnitte, alle an einem Ort.
2015-02-27 15:44:48 +01:00
2015-03-12 17:58:34 +01:00
**Haftungsausschluss**: Obwohl das Einfügen der Ausschnitte in eine `.htaccess` -Datei sehr zeitsparend ist, gibt es Fälle, in denen bestimme Veränderungen nötig sein könnten. Benutzung auf eigene Gefahr.
2015-02-27 15:44:48 +01:00
2015-03-12 17:58:34 +01:00
**WICHTIG**: Apache 2.4 führt einige Änderungen ein, welche die Konfiguration zerstören könnten, hauptsächlich in der Zugriffskontrolle. Für mehr Informationen schauen Sie das [Upgrading Dokument ](https://httpd.apache.org/docs/2.4/upgrading.html ) und [dieses Ticket ](https://github.com/phanan/htaccess/issues/2 ) an.
2015-02-27 15:44:48 +01:00
## Credits
2015-03-12 17:58:34 +01:00
Wir sammeln hier hauptsächlich nützliche Ausschnitte aus dem Internet (beispielsweise aus [Apache Server Configs ](https://github.com/h5bp/server-configs-apache )) an einem Ort. Obwohl wir versuchen, alle Autoren zu erwähnen, ist es möglich, dass einige davon fehlen. Wenn Sie glauben, dass etwas hiervon Ihre Arbeit ist und Sie erwähnt werden sollten, lassen Sie uns dies wissen.
2015-02-27 15:44:48 +01:00
## Inhalt
2015-02-27 16:05:19 +01:00
- [Rewrite und Redirection ](#rewrite-und-redirection )
- [www erzwingen ](#www-erzwingen )
- [www allgemein erzwingen ](#www-allgemein-erzwingen )
- [nicht-www erzwingen ](#nicht-www-erzwingen )
- [nicht-www allgemein erzwingen ](#nicht-www-allgemein-erzwingen )
2015-02-27 16:08:18 +01:00
- [HTTPS erzwingen ](#https-erzwingen )
- [HTTPS hinter einem Proxy erzwingen ](#https-hinter-einem-proxy-erzwingen )
- [Nachgestellete Querstriche erzwingen ](#nachgestellete-querstriche-erzwingen )
2015-02-27 16:05:19 +01:00
- [Nachgestellete Querstriche entfernen ](#nachgestellete-querstriche-entfernen )
- [Eine einzelne Seite weiterleiten ](#eine-einzelne-seite-weiterleiten )
- [Ein einziges Verzeichnis aliasen ](#ein-einziges-verzeichnis-aliasen )
- [Pfad zu Skript aliasen ](#pfad-zu-skript-aliasen )
- [Eine komplette Seite weiterleiten ](#eine-komplette-seite-weiterleiten )
- ["Saubere" URLs aliasen ](#saubere-urls-aliasen )
- [Sicherheit ](#sicherheit )
- [Kompletten Zugriff verbieten ](#kompletten-zugriff-verbieten )
- [Kompletten Zugriff außer Ihren verbieten ](#kompletten-zugriff-au%C3%9Fer-ihren-verbieten )
- [Zugriff erlauben, außer von Spammern ](#zugriff-erlauben-au%C3%9Fer-von-spammern )
- [Zugriff zu versteckten Dateien und Verzeichnissen verbieten ](#zugriff-zu-versteckten-dateien-und-verzeichnissen-verbieten )
- [Zugriff zu Backup- und Quelldateien verbieten ](#zugriff-zu-backup--und-quelldateien-verbieten )
- [Verzeichnis-Auflistung abschalten ](#verzeichnis-auflistung-abschalten )
- [Bild-Hotlinking abschalten ](#bild-hotlinking-abschalten )
- [Bild-Hotlinking für spezielle Domains abschalten ](#bild-hotlinking-f%C3%BCr-spezielle-domains-abschalten )
- [Ein Verzeichnis mit Passwort schützen ](#ein-verzeichnis-mit-passwort-sch%C3%BCtzen )
- [Eine oder mehere Dateien mit Passwort schützen ](#eine-oder-mehere-dateien-mit-passwort-sch%C3%BCtzen )
- [Besucher nach Referer blockieren ](#besucher-nach-referer-blockieren )
- [Verbieten die Seite zu framen ](#verbieten-die-seite-zu-framen )
- [Leistung ](#leistung )
- [Textdateien komprimieren ](#textdateien-komprimieren )
- [Setzt Ablauf im Header ](#setzt-ablauf-im-header )
- [eTags abschalten ](#etags-abschalten )
- [Verschiedenes ](#verschiedenes )
- [PHP Variablen setzen ](#php-variablen-setzen )
- [Eigene Fehlerseiten ](#eigene-fehlerseiten )
- [Download erzwingen ](#download-erzwingen )
- [Download verhindern ](#download-verhindern )
- [Cross-Domain Schriftarten erlauben ](#cross-domain-schriftarten-erlauben )
2015-03-12 17:58:34 +01:00
- [Automatische UTF-8-Kodierung ](#automatische-utf-8-kodierung )
2015-02-27 16:05:19 +01:00
- [Zu einer anderen PHP Version wechseln ](#zu-einer-anderen-php-version-wechseln )
- [Internet Explorer Kompatibilitätsansicht deaktivieren ](#internet-explorer-kompatibilit%C3%A4tsansicht-deaktivieren )
- [WebP Bilder bereitstellen ](#webp-bilder-bereitstellen )
2015-02-27 15:44:48 +01:00
## Rewrite und Redirection
2015-03-12 17:58:34 +01:00
Bemerkung: Es wird vorausgesetzt, dass Sie `mod_rewrite` installiert und aktiviert haben.
2015-02-27 15:44:48 +01:00
### www erzwingen
``` apacheconf
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
```
### www allgemein erzwingen
``` apacheconf
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
```
Dies funktioniert für _jede_ Domain. [Quelle ](https://stackoverflow.com/questions/4916222/htaccess-how-to-force-www-in-a-generic-way )
### nicht-www erzwingen
Es [wird ](http://no-www.org/ ) [noch ](http://www.sitepoint.com/domain-www-or-no-www/ ) [immer ](https://devcenter.heroku.com/articles/apex-domains ) [diskutiert ](http://yes-www.org/ ), ob www oder nicht-www besser ist, also wenn Sie ein Fan von knappen Domains sind:
``` apacheconf
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
```
### nicht-www allgemein erzwingen
``` apacheconf
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
```
### HTTPS erzwingen
``` apacheconf
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
2015-03-12 17:58:34 +01:00
# Bermerke: Es wird außerdem empfohlen, HTTP Strict Transport Security (HSTS)
# auf Ihrer HTTPS-Webseite zu aktivieren, um Man-in-the-Middle-Attacken zu vermeiden.
2015-02-27 15:44:48 +01:00
# Siehe https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security
< IfModule mod_headers . c >
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
< / IfModule >
```
### HTTPS hinter einem Proxy erzwingen
2015-03-12 17:58:34 +01:00
Nützlich, wenn Sie einen Proxy vor Ihrem Server haben, der TLS-Termination ausführt.
2015-02-27 15:44:48 +01:00
``` apacheconf
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
```
2015-02-27 16:08:18 +01:00
### Nachgestellete Querstriche erzwingen
2015-02-27 15:44:48 +01:00
``` apacheconf
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
```
### Nachgestellete Querstriche entfernen
``` apacheconf
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
```
### Eine einzelne Seite weiterleiten
``` apacheconf
Redirect 301 /oldpage.html http://www.example.com/newpage.html
Redirect 301 /oldpage2.html http://www.example.com/folder/
```
[Quelle ](http://css-tricks.com/snippets/htaccess/301-redirects/ )
### Ein einziges Verzeichnis aliasen
``` apacheconf
RewriteEngine On
RewriteRule ^source-directory/(.*) target-directory/$1
```
### Pfad zu Skript aliasen
``` apacheconf
FallbackResource /index.fcgi
```
2015-03-12 17:58:34 +01:00
In diesem Beispiel ist eine `index.fcgi` -Datei in einem Verzeichnis vorhanden und alle Anfragen in dieses Verzeichnis, die keinem vorhandenen Datei- oder Verzeichnisnamen zugewiesen werde können, werden stattdessen an das `index.fcgi` -Skript gesendet. Dies ist nützlich, wenn Sie möchten, dass `baz.foo/index.fcgi` von `baz.foo/some/cool/path` (was auch Anfragen an `baz.foo` bearbeitet) aufgerufen wird, während `baz.foo/css/style.css` und ähnliche Dateien weiterhin funktionieren. Sie können über die Umgebungsvariable `PATH_INFO` , die von Ihrer Skriptingumgebung zur Verfügung gestellt wird, auf den ursprünglichen Pfad zugreifen.
2015-02-27 15:44:48 +01:00
``` apacheconf
RewriteEngine On
RewriteRule ^$ index.fcgi/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]
```
2015-03-12 17:58:34 +01:00
Dies ist eine weniger effiziente Variante der FallbackResource-Direktive (da die Verwendung von `mod_rewrite` komplexer ist, als einfach nur die `FallbackResource` -Direktive zu nutzen), allerdings ist sie auch flexibler.
2015-02-27 15:44:48 +01:00
### Eine komplette Seite weiterleiten
``` apacheconf
Redirect 301 / http://newsite.com/
```
Auf diese Art bleiben die Links intakt. `www.oldsite.com/some/crazy/link.html` wird zu `www.newsite.com/some/crazy/link.html` . Dies ist sehr hilfreich, wenn Sie eine Seite nur zu einer neuen Domain "umziehen". [Quelle ](http://css-tricks.com/snippets/htaccess/301-redirects/ )
2015-02-27 16:05:19 +01:00
### "Saubere" URLs aliasen
2015-03-12 17:58:34 +01:00
Dieser Ausschnitt erlaubt Ihnen, "saubere URLs", also URLs ohne Dateinamenserweiterung, beispielsweise `example.com/users` anstelle von `example.com/users.php` zu verwenden.
2015-02-27 15:44:48 +01:00
``` apacheconf
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]
```
[Source ](http://www.abeautifulsite.net/access-pages-without-the-php-extension-using-htaccess/ )
## Sicherheit
### Kompletten Zugriff verbieten
``` apacheconf
## Apache 2.2
Deny from all
## Apache 2.4
# Require all denied
```
2015-03-12 17:58:34 +01:00
Achtung, dadurch werden alle Benutzer, auch Sie selbst, von der Webseite ausgesperrt.
2015-02-27 15:44:48 +01:00
### Kompletten Zugriff außer Ihren verbieten
``` apacheconf
## Apache 2.2
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx
## Apache 2.4
# Require all denied
# Require ip xxx.xxx.xxx.xxx
```
2015-03-12 17:58:34 +01:00
`xxx.xxx.xxx.xxx` ist Ihre IP-Adresse. Wenn Sie die letzten drei Ziffern beispielsweise mit 0/12 ersetzen, geben Sie einen Bereich von IP-Adressen im selben Netzwerk an. Dadurch müssen Sie nicht alle erlaubten IP-Adressen aus einem Netzwerk separat auflisten. [Quelle ](http://speckyboy.com/2013/01/08/useful-htaccess-snippets-and-hacks/ )
2015-02-27 15:44:48 +01:00
Natürlich gibt es auch eine umgekehrte Version:
### Zugriff erlauben, außer von Spammern
``` apacheconf
## Apache 2.2
Order deny,allow
Allow from all
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx.xxy
## Apache 2.4
# Require all granted
# Require not ip xxx.xxx.xxx.xxx
# Require not ip xxx.xxx.xxx.xxy
```
### Zugriff zu versteckten Dateien und Verzeichnissen verbieten
2015-03-12 17:58:34 +01:00
Versteckte Dateien und Verzeichnisse (die, deren Name mit einem Punkt `.` startet) sollen meistens, wenn nicht immer, abgesichert werden. Zum Beispiel: `.htaccess` , `.htpasswd` , `.git` , `.hg` ...
2015-02-27 15:44:48 +01:00
``` apacheconf
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
```
2015-03-12 17:58:34 +01:00
Alternativ können Sie auch einen `Not Found` -Fehler ausgeben, damit der Angreifer keinen Hinweis auf die Existenz der Dateien erhält:
2015-02-27 15:44:48 +01:00
``` apacheconf
RedirectMatch 404 /\..*$
```
### Zugriff zu Backup- und Quelldateien verbieten
Diese Dateien können von manchen Editoren (wie Vi/Vim) zurückgelassen werden, und stellen ein goßes Sicherheitsrisiko dar, wenn jemand darauf zugreifen kann.
``` apacheconf
< FilesMatch "( \.( bak | config | dist | fla | inc | ini | log | psd | sh | sql | swp )|~)$" >
## Apache 2.2
Order allow,deny
Deny from all
Satisfy All
## Apache 2.4
# Require all denied
< / FilesMatch >
```
[Quelle ](https://github.com/h5bp/server-configs-apache )
### Verzeichnis-Auflistung abschalten
``` apacheconf
Options All -Indexes
```
### Bild-Hotlinking abschalten
``` apacheconf
RewriteEngine on
# Remove the following line if you want to block blank referrer too
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(.+\.)?example.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|bmp)$ - [NC,F,L]
2015-03-12 17:58:34 +01:00
# Wenn Sie einen "Blockiert"-Banner anstatt des gehotlinkten Bildes
# anzeigen möchten, ersetzen Sie die obere Regel mit:
2015-02-27 15:44:48 +01:00
# RewriteRule \.(jpg|jpeg|png|gif|bmp) http://example.com/blocked.png [R,L]
```
### Bild-Hotlinking für spezielle Domains abschalten
2015-03-12 17:58:34 +01:00
Manchmal will man Bild-Hotlinking nur für manche Seiten deaktivieren.
2015-02-27 15:44:48 +01:00
``` apacheconf
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http(s)?://(.+\.)?badsite\.com [NC,OR]
RewriteCond %{HTTP_REFERER} ^http(s)?://(.+\.)?badsite2\.com [NC,OR]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
2015-03-12 17:58:34 +01:00
# Wenn Sie einen "Blockiert"-Banner anstatt des gehotlinkten Bildes
# anzeigen möchten, ersetzen Sie die obere Regel mit:
2015-02-27 15:44:48 +01:00
# RewriteRule \.(jpg|jpeg|png|gif|bmp) http://example.com/blocked.png [R,L]
```
### Ein Verzeichnis mit Passwort schützen
Zuerst müssen Sie irgendwo eine `.htpasswd` Datei erstellen:
``` bash
htpasswd -c /home/fellowship/.htpasswd boromir
```
Dann können Sie diese zur Authentifizierung benutzen:
``` apacheconf
AuthType Basic
AuthName "One does not simply"
AuthUserFile /home/fellowship/.htpasswd
Require valid-user
```
### Eine oder mehere Dateien mit Passwort schützen
``` apacheconf
AuthName "One still does not simply"
AuthType Basic
AuthUserFile /home/fellowship/.htpasswd
< Files " one-ring . o " >
Require valid-user
< / Files >
< FilesMatch ^(( one | two | three ) -rings ? \.o )$ >
Require valid-user
< / FilesMatch >
```
### Besucher nach Referer blockieren
2015-03-12 17:58:34 +01:00
Verbietet den Zugriff für alle Benutzer, die von einer bestimmten Domain weitergeleitet wurden.
2015-02-27 15:44:48 +01:00
[Quelle ](http://www.htaccess-guide.com/deny-visitors-by-referrer/ )
``` apacheconf
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} somedomain\.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherdomain\.com
RewriteRule .* - [F]
```
### Verbieten die Seite zu framen
Dies schützt die Webseite davor in einem Frame (z.B. einem iframe) dargestellt zu werden, wobei eine bestimmte URI immernoch geframet werden darf.
``` apacheconf
SetEnvIf Request_URI "/starry-night" allow_framing=true
Header set X-Frame-Options SAMEORIGIN env=!allow_framing
```
## Leistung
### Textdateien komprimieren
``` apacheconf
< IfModule mod_deflate . c >
2015-03-12 17:58:34 +01:00
# Kompression für "mangled headers" erzwingen.
2015-02-27 15:44:48 +01:00
# http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
< IfModule mod_setenvif . c >
< IfModule mod_headers . c >
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
< / IfModule >
< / IfModule >
# Alles mit dem folgenden MIME-types komprimieren:
2015-03-12 17:58:34 +01:00
# (für Apache Versionen unter 2.3.7, müssen Sie `mod_filter` nicht aktivieren
2015-02-27 15:44:48 +01:00
# und können die Zeilen `<IfModule mod_filter.c>` und `</IfModule>` entfernen
# da `AddOutputFilterByType` noch immer in den Hauptdirektiven ist).
< IfModule mod_filter . c >
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
< / IfModule >
< / IfModule >
```
[Quelle ](https://github.com/h5bp/server-configs-apache )
### Setzt Ablauf im Header
2015-03-12 17:58:34 +01:00
_Expire headers_ (Ablauf-Header) teilen dem Browser mit, ob er eine bestimmte Datei vom Server oder aus dem Cache holen soll. Es ist ratsam, den Ablauf von statischen Inhalt weit in die Zukunft zu legen.
Wenn Sie die Versionierung nicht durch Dateinamen kontrollieren, ziehen Sie in Betracht, die Cachezeit für Ressourcen wie CSS und JS auf ca. eine Woche zu veringern. [Quelle ](https://github.com/h5bp/server-configs-apache )
2015-02-27 15:44:48 +01:00
``` apacheconf
< IfModule mod_expires . c >
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
2015-03-12 17:58:34 +01:00
# Datenaustausch
2015-02-27 15:44:48 +01:00
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (kann nicht umbenannt werden!)
ExpiresByType image/x-icon "access plus 1 week"
2015-03-12 17:58:34 +01:00
# HTML-Komponenten (HTCs)
2015-02-27 15:44:48 +01:00
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
2015-03-12 17:58:34 +01:00
# Web-Feeds
2015-02-27 15:44:48 +01:00
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
2015-03-12 17:58:34 +01:00
# Web-Schriftarten
2015-02-27 15:44:48 +01:00
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
< / IfModule >
```
### eTags abschalten
``` apacheconf
2015-03-12 17:58:34 +01:00
Durch das Entfernen des `ETag` -Headers machen Sie es Caches und Browsern unmöglich, die Dateien zu validieren, wodurch sie von Ihren `Cache-Control` und `Expires` Headern abhängig sind. [Quelle ](http://www.askapache.com/htaccess/apache-speed-etags.html )
2015-02-27 15:44:48 +01:00
< IfModule mod_headers . c >
Header unset ETag
< / IfModule >
FileETag None
```
## Verschiedenes
2015-03-12 17:58:34 +01:00
### PHP-Variablen setzen
2015-02-27 15:44:48 +01:00
``` apacheconf
php_value < key > < val >
# Zum Beispiel:
php_value upload_max_filesize 50M
php_value max_execution_time 240
```
### Eigene Fehlerseiten
``` apacheconf
ErrorDocument 500 "Houston, we have a problem."
ErrorDocument 401 http://error.example.com/mordor.html
ErrorDocument 404 /errors/halflife3.html
```
### Download erzwingen
2015-03-12 17:58:34 +01:00
Manchmal wollen Sie den Browser dazu zwingen, Inhalte herunterzuladen, anstatt sie nur anzuzeigen.
2015-02-27 15:44:48 +01:00
``` apacheconf
< Files * . md >
ForceType application/octet-stream
Header set Content-Disposition attachment
< / Files >
```
Es gibt auch ein Yang zu diesem Yin:
### Download verhindern
2015-03-12 17:58:34 +01:00
Manchmal wollen Sie den Browser dazu zwingen, Inhalte nur anzuzeigen, anstatt sie herunterzuladen.
2015-02-27 15:44:48 +01:00
``` apacheconf
< FilesMatch " \.( tex | log | aux )$" >
Header set Content-Type text/plain
< / FilesMatch >
```
2015-03-12 17:58:34 +01:00
### Cross-Domain-Schriftarten erlauben
Web-Schriftarten von CDNs funktionieren möglicherweise nicht in Firefox oder IE [siehe CORS ](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing ). Dieser Ausschnitt löst dieses Problem.
2015-02-27 15:44:48 +01:00
``` apacheconf
< IfModule mod_headers . c >
< FilesMatch " \.( eot | otf | ttc | ttf | woff | woff2 )$" >
Header set Access-Control-Allow-Origin "*"
< / FilesMatch >
< / IfModule >
```
[Quelle ](https://github.com/h5bp/server-configs-apache/issues/32 )
2015-03-12 17:58:34 +01:00
### Automatische UTF-8-Kodierung
Text sollte immer als UTF-8 kodiert werden, nicht?
2015-02-27 15:44:48 +01:00
``` apacheconf
2015-03-12 17:58:34 +01:00
# UTF-8-Kodierung für alles verwenden, was als text/plain oder text/html angeboten wird
2015-02-27 15:44:48 +01:00
AddDefaultCharset utf-8
2015-03-12 17:58:34 +01:00
# UTF-8-Kodierung für bestimmte Dateiformate erzwingen
2015-02-27 15:44:48 +01:00
AddCharset utf-8 .atom .css .js .json .rss .vtt .xml
```
[Quelle ](https://github.com/h5bp/server-configs-apache )
### Zu einer anderen PHP Version wechseln
2015-03-12 17:58:34 +01:00
Wenn Sie auf einem Shared Host sind, ist es möglich, dass mehr als eine PHP Version installiert ist, und manchmal wollen Sie eine bestimmte Version für ihre Webseite nutzen. Beispielsweise benötigt [Laravel ](https://github.com/laravel/laravel ) PHP >= 5.4. Der folgende Ausschnitt sollte die PHP-Version für Sie wechseln.
2015-02-27 15:44:48 +01:00
``` apacheconf
AddHandler application/x-httpd-php55 .php
2015-03-12 17:58:34 +01:00
# Anternativ können Sie AddType benutzen
2015-02-27 15:44:48 +01:00
AddType application/x-httpd-php55 .php
```
### Internet Explorer Kompatibilitätsansicht deaktivieren
2015-03-12 17:58:34 +01:00
Die Kompatibilitätsansicht in IE kann sich darauf auswirken, wie manche Webseiten dargestellt werden. Der folgende Ausschnitt sollte IE dazu zwingen, die Edge Rendering Engine zu benutzen und die Kompatibilitätsansicht zu deaktivieren.
2015-02-27 15:44:48 +01:00
``` apacheconf
< IfModule mod_headers . c >
BrowserMatch MSIE is-msie
Header set X-UA-Compatible IE=edge env=is-msie
< / IfModule >
```
### WebP Bilder bereitstellen
2015-03-12 17:58:34 +01:00
Wenn [WebP Bilder ](https://developers.google.com/speed/webp/?csw=1 ) unterstützt werden und ein Bild mit der Dateinamenserweiterung `.webp` , mit dem selben Namen und am selben Ort wie ein jpg/png-Bild, gefunden wird, dann wird das WebP Bild anstelle des jpg/png Bildes angezeigt.
2015-02-27 15:44:48 +01:00
``` apacheconf
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
```
[Quelle ](https://github.com/vincentorback/WebP-images-with-htaccess )