.htaccess - Favicon umleiten

9

Wie leite ich alle Anfragen für favicon.ico im Stammverzeichnis oder einem Unterverzeichnis an /images/favicon.ico

um     
Tim 09.03.2010, 10:04
quelle

5 Antworten

21

Versuchen Sie diese Regel:

%Vor%

Bearbeiten Und für favicon.ico mit beliebiger Pfadsegmenttiefe:

%Vor%     
Gumbo 09.03.2010, 17:13
quelle
3
%Vor%     
Sejanus 09.03.2010 10:17
quelle
2

Für ein Favicon bei www.mysite.com/images/favicon.ico Die robusteste Methode wäre:

%Vor%

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 Ссылка

testen

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.

    
goredwards 03.03.2016 21:43
quelle
0

Dieses schnelle Umschreiben sollte den Trick machen:

%Vor%     
Marcos Placona 09.03.2010 10:19
quelle
-1

Ich weiß, dass die Frage mit .htaccess markiert ist, aber warum nicht einen Symlink verwenden?

%Vor%     
gregseth 12.03.2010 09:09
quelle

Tags und Links