11
votes

.htaccess - Rediriger Favicon

Comment rediriger toutes les demandes de favicon.ico dans le répertoire racine ou tout sous-répertoire à /images/favicon.ico


0 commentaires

5 Réponses :


3
votes
RewriteEngine on

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

5 commentaires

le ^ devant est très important


Cela me donne une erreur de serveur interne. Est-ce la balustrade (. *) Favicon.ico correspond aussi /images/favicon.ico donc il devient une boucle


Le journal des erreurs vérifiées et la demande d'État indique la limite de 10 redirections internes en raison d'une erreur de configuration probable "alors on dirait que c'est vraiment redirige à lui-même. Comment puis-je contourner ça?


Droite j'ai sauté [l] drapeau. Essayez selon la réponse de Gumbo.


Je pense que j'ai besoin d'utiliser cela avec une réécrire pour dire si demande URI pas /images/favicon.ico Vous n'êtes pas sûr de la syntaxe correcte



0
votes

Cette réécriture rapide devrait faire l'affaire:

RewriteRule ^(.*)favicon.ico /images/favicon.ico


0 commentaires

25
votes

Essayez cette règle:

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


2 commentaires

Cela fonctionne pour /favicon.ico mais pas pour /folder/favicon.ico Certains navigateurs demandent favicon.ico dans le dossier local, même s'il est spécifié comme /images/favicon.ico, donc je voulais rediriger les demandes actuellement défaillantes au bon endroit.


Élargir ce concept, une règle de réécriture plus détaillée représentant également des icônes non-Favicon: Stackoverflow.com/a/37107216/4378314



0
votes

Je sais que la question est marquée .htaccess code> mais, pourquoi ne pas utiliser un symbole symbolique?

ln -s images/favicon.ico favicon.ico


2 commentaires

Parce que je devrais alors créer un lien symbolique dans chaque répertoire et sous-répertoire sur le site


Si le serveur recherche FAVICON.ICO à la racine et vous ne pouvez pas y avoir là, un lien symbolique ferait ... Je vais mettre en œuvre cela maintenant (pour ne pas être attaché à Apache), mais si cela a besoin de faire Sur une base de répertoire par répertoire, il est peut-être peut-être l'heure de pré-considérer la configuration ...



7
votes

pour un Favicon à www.mysite.com/images/favicon.ico La méthode la plus robuste serait: xxx

explication:

réécritecond% {request_uri}! ^ / images / favicon \ .ico [nc] :
- veille à ce que la règle de redirection ne s'applique pas si l'URI correcte est demandée (par exemple, une redirection 301 écrira le cache de navigateur correct pour le cache de navigateur - et cette ligne évite le traitement de la règle si le navigateur demande la bonne URI)
- [NC] signifie que ce n'est pas sensible à la casse

réécritecond% {http_host} (. +) :
- Récupère le nom d'hôte HTTP - pour éviter de coder dur le nom d'hôte dans le Rewriterule
- Cela signifie que vous pouvez copier votre fichier .htaccess entre serveur local / test et serveur de production sans problèmes (ni besoin de recouvrir de la nouvelle URL de base de site dans votre rédreule)

Rewriterule ^ ( . *) Favicon \. (ICO | GIF | PNG | JPE? g) $ http: //%1/images/favicon.ico [r = 301, l] : - ^ est le début de la regex
- (. *) est un groupe de caractères génériques - ce qui signifie qu'il peut y avoir zéro ou n'importe quel nombre de caractères avant le mot Favicon dans l'URI (c'est-à-dire que c'est la partie que Permet à l'annuaire racine ou à tous les sous-répertoires d'être inclus dans le match URI)
- \. (ico | gif | png | JPE? g) vérifie que l'extension URI correspond à l'un des .ico , .gif . Code> .png , .jpg , .jpeg
- $ est la fin de la regex
- http: //%1/images/favicon.ico est l'URL de redirection - et il injecte le nom d'hôte que nous avons récupéré dans le précédent réécritecond . Notez que le % 1 est appelé un réécriteconde Releférence Cela signifie que c'est le dernier réécritecond qui a été rempli. (par exemple, % 2 serait le 2e dernier réécritecond que pour avoir été rempli)
- r = 301 signifie qu'il s'agit d'une redirection permanente - qui stocke la redirection dans le cache de navigateur. Soyez prudent lorsque vous testez - vous devez supprimer le cache de navigateur entre les modifications de code ou la redirection ne mettra pas à jour. Laissez-la probablement jusqu'à ce que vous sachiez la règle fonctionne.
- l signifie que c'est la dernière redirection à suivre dans ce fichier .htaccess . Vous n'aurez pas besoin de cela pour que la règle fonctionne depuis la ligne 1 ne sera pas atteinte une fois Le navigateur est dirigé vers la bonne URL. Sans la ligne 1 ou l La réractère entraînera une boucle permanente (puisque l'URL de redirection continuera à satisfaire les conditions Rewriterle conditions). Cependant, il est judicieux d'ajouter le l de toute façon si vous avez d'autres règles qui suivent les règles FAVICON - depuis sur une demande Favicon.ico, vous pouvez (probablement) ignorer les règles suivantes.

Vous pouvez tester .htaccess Règles de http: //htacaccess.mwl .be /

Note finale:
- Soyez prudent que vous n'ayez pas d'autres redailleulé dans un fichier .htaccess situé dans l'un de vos sous-répertoires.
- par exemple, si vous mettez cette réponse dans votre www.mysite.com / dossier racine .htaccess fichier, un rewriterule (. * ) xxx règle de type dans votre www.mysite.com/images / dossier peut gâcher avec les résultats.


0 commentaires