Frage

Wie leite ich alle Anfragen für favicon.ico im Wurzelverzeichnis oder in einem Unterverzeichnis auf /images/favicon.ico um

War es hilfreich?

Lösung

Probieren Sie diese Regel aus:

RewriteEngine on
RewriteRule ^favicon\.ico$ /images/favicon.ico [L]

BearbeitenUnd für favicon.ico mit willkürlicher Pfadsegmenttiefe:

RewriteCond $0 !=images/favicon.ico
RewriteRule ^([^/]+/)*favicon\.ico$ /images/favicon.ico [L]

Andere Tipps

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

RewriteCond %{REQUEST_URI} !^/images/favicon\.ico$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301,L,NC]

Erläuterung:

RewriteCond %{REQUEST_URI} !^/images/favicon\.ico [NC] :
- Stellen Sie sicher, dass die Umleitungsregel nicht gilt, wenn die richtige URI angefordert wird (z. B. eine 301 -Umleitung schreibt den richtigen Favicon -URI in den Browser -Cache - und diese Zeile vermeidet die Verarbeitung der Regel, wenn der Browser die richtige URI fordert).
- [NC] bedeutet, dass es nicht fallsempfindlich ist

RewriteCond %{HTTP_HOST} (.+) :
- Ruft den HTTP -Hostnamen ab - um die harte Codierung des Hostnamens in die zu vermeiden RewriteRule
- Dies bedeutet, dass Sie Ihre .htaccess-Datei zwischen Lokal-/Testserver und Production Server ohne Probleme kopieren können (oder die Notwendigkeit, Ihre neue URL der Site-Basis in Ihr Umriterieren neu zu streichen).

RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L] :
- ^ ist der Beginn der Regex
- (.*) ist eine Wildcard -Gruppe - was bedeutet, dass es vor dem Wort Null oder eine beliebige Anzahl von Zeichen geben kann favicon In der URI (dh dies ist der Teil, mit dem das Root -Verzeichnis oder alle Unterverzeichnisse in die URI -Übereinstimmung aufgenommen werden können)
- \.(ico|gif|png|jpe?g) Überprüft, ob die URI -Erweiterung einem von einem von entspricht .ico, .gif, .png, .jpg, .jpeg
- $ ist das Ende der Regex
- http://%1/images/favicon.ico ist die Umleitungs -URL - und sie injiziert den Hostnamen, den wir in den vorherigen abgerufen haben RewriteCond. Notiere dass der %1 ist ein genanntes a Umschreiber zurückschreiben Das bedeutet, dass es das letzte ist RewriteCond Das wurde erfüllt. (z.B %2 wäre der 2. Last RewriteCond das, um erfüllt worden zu sein)
- R=301 bedeutet, dass es sich um eine dauerhafte Weiterleitung handelt - die die Umleitung im Browser -Cache speichert. Seien Sie vorsichtig beim Testen - Sie müssen den Browser -Cache zwischen Codeänderungen löschen oder die Umleitung wird nicht aktualisiert. Lassen Sie dies wahrscheinlich aus, bis Sie wissen, dass die Regel funktioniert.
- L bedeutet, dass es die letzte Weiterleitung ist, die darauf befolgt werden soll .htaccess Datei - Sie benötigen nicht, um die Regel zum Laufen zu bringen, da Zeile 1 nicht erfüllt wird, sobald der Browser an die richtige URL gerichtet ist. Ohne die entweder Zeile 1 oder L Das Rewriterule führt zu einer dauerhaften Schleife (da die Umleitungs -URL das immer wieder erfüllt RewriteRule Bedingungen). Es ist jedoch eine gute Idee, das hinzuzufügen L Wie auch immer, wenn Sie andere Regeln haben, die den Favicon -Regeln gemäß einer Favicon.ICO -Anfrage folgen, können Sie (wahrscheinlich) alle folgenden Regeln ignorieren.

Sie können testen .htaccess Regeln bei http://htaccess.mwl.be/

Schlussnotiz:
- Achten Sie darauf, dass Sie in einem keine andere Umriteriere haben .htaccess Datei befindet sich in einem Ihrer Unterverzeichnisse.
- zB, wenn Sie setzen Dies antworte in deinem www.mysite.com/ root-Verzeichnis .htaccess Datei A RewriteRule (.*) xxx Geben Sie eine Regel in Ihre ein www.mysite.com/images/ Ordner kann mit den Ergebnissen durcheinander bringen.

RewriteEngine on

RewriteRule ^(.*)favicon\.ico /images/favicon.ico [L]

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

ln -s images/favicon.ico favicon.ico

Dieses schnelle Umschreiben sollte den Trick machen:

RewriteRule ^(.*)favicon.ico /images/favicon.ico
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top