Für ein Favicon bei www.mysite.com/images/favicon.ico
Die robusteste Methode wäre:
Erläuterung:
RewriteCond %{REQUEST_URI} !^/images/favicon\.ico [NC]
:
- stellt sicher, dass die Umleitungsregel NICHT angewendet wird, wenn der richtige URI angefordert wird (zB eine 301-Weiterleitung schreibt den korrekten Favicon-URI in den Browser-Cache - und diese Zeile vermeidet die Verarbeitung der Regel, wenn der Browser den korrekten URI anfordert)
- [NC] bedeutet, dass nicht zwischen Groß- und Kleinschreibung unterschieden wird
RewriteCond %{HTTP_HOST} (.+)
:
- Ruft den http-Hostnamen ab - um zu vermeiden, dass der Hostname in RewriteRule
hart codiert wird
- Das bedeutet, dass Sie Ihre .htaccess-Datei problemlos zwischen dem lokalen / Testserver und dem Produktionsserver kopieren können (oder die neue Site-Basis-URL in Ihre RewriteRule re-hardcodieren müssen)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L]
:
- ^
ist der Anfang der Regex
- (.*)
ist eine Platzhaltergruppe - was bedeutet, dass vor dem Wort favicon
im URI null oder beliebig viele Zeichen stehen dürfen (dh dies ist der Teil, der es ermöglicht, dass Wurzelverzeichnis oder Unterverzeichnisse in die URI-Übereinstimmung eingeschlossen werden) )
- \.(ico|gif|png|jpe?g)
überprüft, ob die URI-Erweiterung mit .ico
, .gif
, .png
, .jpg
, .jpeg
übereinstimmt
- $
ist das Ende der Regex
- http://%1/images/favicon.ico
ist die Umleitungs-URL - und es injiziert den Hostnamen, den wir in der vorherigen RewriteCond
abgerufen haben. Beachten Sie, dass %1
eine RewriteCond-Rückreferenz genannt wird. Dies bedeutet, dass es sich um die letzte handelt RewriteCond
, die erfüllt wurde. (zB %2
wäre der zweitletzte RewriteCond
, der erfüllt wurde)
- R=301
bedeutet, dass es sich um eine permanente Weiterleitung handelt, die die Weiterleitung im Browser-Cache speichert. Seien Sie vorsichtig beim Testen - Sie müssen den Browser-Cache zwischen den Codeänderungen löschen oder die Weiterleitung wird nicht aktualisiert. Vermeide das wahrscheinlich, bis du weißt, dass die Regel funktioniert.
- L
bedeutet, dass es die letzte Weiterleitung ist, die in dieser .htaccess
-Datei verfolgt wird - Sie brauchen dies nicht, damit die Regel funktioniert, da Zeile 1 nicht erfüllt wird, sobald der Browser auf die richtige URL verweist. Ohne die Zeile 1 oder L
führt die RewriteRule zu einer permanenten Schleife (da die Weiterleitungs-URL weiterhin die Bedingungen RewriteRule
erfüllt). Es ist jedoch eine gute Idee, das L
trotzdem hinzuzufügen, wenn Sie andere Regeln haben, die den Favicon-Regeln folgen - da Sie bei einer favicon.ico-Anfrage (möglicherweise) die folgenden Regeln ignorieren können.
Sie können .htaccess
-Regeln in Ссылка
Schlussbemerkung:
- Achten Sie darauf, dass Sie keine andere RewriteRule in einer .htaccess
-Datei haben, die sich in einem Ihrer Unterverzeichnisse befindet.
- Wenn Sie beispielsweise diese Antwort in Ihre www.mysite.com/
Stammordner .htaccess
Datei schreiben, kann eine RewriteRule (.*) xxx
type Regel in Ihrem www.mysite.com/images/
Ordner mit den Ergebnissen unordentlich werden.