Cela fonctionne pour /favicon.ico mais pas pour le /dossier/favicon.ico Certains navigateurs demandent un favicon.ico dans le dossier local, même si c'est spécifié en tant que /images/favicon.ico j'ai donc voulu rediriger le actuellement à défaut de demande à l'emplacement correct
RewriteEngine on
RewriteRule ^(.*)favicon\.ico /images/favicon.ico [L]
l' ^ en face est très important Ce qui me donne une erreur de serveur interne. Est-ce à cause (.*)favicon.ico également matches /images/favicon.ico, de sorte qu'il devient une boucle Vérifié journal des erreurs et il est dit: "la Demande a dépassé la limite de 10 redirections internes cause probable de l'erreur de configuration" regarde donc comme il est, en effet, la redirection vers lui-même. Comment puis-je obtenir autour de qui? Droit j'ai sauté drapeau [L]. Essayez comme par Gumbo réponse. Je pense que j'ai besoin de l'utiliser avec une directive RewriteCond-à-dire si l'URI de la requête n'est pas /images/favicon.ico pas sûr de la syntaxe correcte si
- s'assure que la redirection règle ne s'applique PAS si l'URI est requise (par exemple, une redirection 301 va écrire le bon favicon URI de la mémoire cache du navigateur - et cette ligne permet d'éviter le traitement de la règle si le navigateur demande l'URI correct)
- [NC] signifie qu'il n'est pas sensible à la casse
RewriteCond %{HTTP_HOST} (.+) :
- récupère la http nom de l'hôte afin d'éviter le codage en dur le nom d'hôte dans le RewriteRule
- cela signifie que vous pouvez copier vos .fichier htaccess entre local/serveur de test et le serveur de production sans problèmes (ou de la nécessité de re-coder en dur votre nouveau site à l'url de base dans votre RewriteRule)
- (.*) est un générique de groupe - ce qui signifie qu'il peut y avoir zéro ou un nombre quelconque de caractères avant le mot favicon dans l'URI (ie c'est la partie qui permet de répertoire de racine ou tous les sous-répertoires à inclure dans l'URI match)
- \.(ico|gif|png|jpe?g) vérifie que l'extension de l'URI correspond à l'une des .ico, .gif, .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 nous avons récupéré dans la précédente RewriteCond. Notez que le %1 est ce que l'on appelle un RewriteCond backreference cela signifie qu'il est le dernier RewriteCond qui a été rencontré. (par exemple %2 serait au 2ème et dernier RewriteCond qui ont été satisfaites)
- R=301 signifie que c'est une redirection permanente - qui stocke la redirection dans le cache du navigateur. Être prudent lors de l'essai d' - vous aurez besoin de supprimer le cache du navigateur entre les changements de code ou la redirection ne sera pas mise à jour. Probablement le laisser jusqu'à ce que vous savez que la règle fonctionne.
- L à-dire le dernier de redirection à suivre dans ce .htaccess fichier vous n'aurez pas besoin de cela pour obtenir de la règle de travail depuis la ligne 1 ne seront pas atteints une fois que le navigateur est redirigé vers l'url est correcte. Sans la ligne 1 ou L la RewriteRule entraînera un permanent de la boucle (depuis l'adresse URL de redirection va continuer à satisfaire les RewriteRule conditions). Cependant, c'est une bonne idée d'ajouter la L de toute façon si vous avez d'autres règles à la suite de la favicon règles - car sur un favicon.ico demande, vous pouvez (probablement) ignorer les règles suivantes.
- être prudent que vous n'avez pas d'autres règles de réécriture dans un .htaccess fichier situé dans l'un de vos sous-répertoires.
- par exemple, si vous mettez ce réponse dans votre www.mysite.com/ dossier racine .htaccess fichier, un RewriteRule (.*) xxx type de règle dans votre www.mysite.com/images/ dossier peut mess avec les résultats.
Je sais que la question est balisé .htaccessmais, pourquoi ne pas utiliser un lien symbolique?
ln -s images/favicon.ico favicon.ico
Parce qu'alors j'aurais de créer un lien symbolique dans chaque répertoire unique & sous-répertoire sur le site C'est une solution qui crée de travail au lieu de gagner du temps. Si le serveur est à la recherche de favicon.ico à la racine et vous ne pouvez pas l'avoir là, un lien symbolique serait faire...je vais mettre en œuvre ce maintenant (pour ne pas être lié à Apache) mais si il a besoin de faire sur un répertoire alors peut-être il est temps de ré-examiner la configuration...
Essayer cette règle:
Modifier Et pour favicon.ico arbitraire segment de chemin profondeur:
OriginalL'auteur Gumbo
Ce qui me donne une erreur de serveur interne. Est-ce à cause (.*)favicon.ico également matches /images/favicon.ico, de sorte qu'il devient une boucle
Vérifié journal des erreurs et il est dit: "la Demande a dépassé la limite de 10 redirections internes cause probable de l'erreur de configuration" regarde donc comme il est, en effet, la redirection vers lui-même. Comment puis-je obtenir autour de qui?
Droit j'ai sauté drapeau [L]. Essayez comme par Gumbo réponse.
Je pense que j'ai besoin de l'utiliser avec une directive RewriteCond-à-dire si l'URI de la requête n'est pas /images/favicon.ico pas sûr de la syntaxe correcte si
OriginalL'auteur Sejanus
Un favicon sur
www.mysite.com/images/favicon.ico
le plus robuste de la méthode:
Explication:
RewriteCond %{REQUEST_URI} !^/images/favicon\.ico [NC]
:- s'assure que la redirection règle ne s'applique PAS si l'URI est requise (par exemple, une redirection 301 va écrire le bon favicon URI de la mémoire cache du navigateur - et cette ligne permet d'éviter le traitement de la règle si le navigateur demande l'URI correct)
- [NC] signifie qu'il n'est pas sensible à la casse
RewriteCond %{HTTP_HOST} (.+)
:- récupère la http nom de l'hôte afin d'éviter le codage en dur le nom d'hôte dans le
RewriteRule
- cela signifie que vous pouvez copier vos .fichier htaccess entre local/serveur de test et le serveur de production sans problèmes (ou de la nécessité de re-coder en dur votre nouveau site à l'url de base dans votre RewriteRule)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L]
:-
^
est le début de la regex-
(.*)
est un générique de groupe - ce qui signifie qu'il peut y avoir zéro ou un nombre quelconque de caractères avant le motfavicon
dans l'URI (ie c'est la partie qui permet de répertoire de racine ou tous les sous-répertoires à inclure dans l'URI match)-
\.(ico|gif|png|jpe?g)
vérifie que l'extension de l'URI correspond à l'une des.ico
,.gif
,.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 nous avons récupéré dans la précédenteRewriteCond
. Notez que le%1
est ce que l'on appelle un RewriteCond backreference cela signifie qu'il est le dernierRewriteCond
qui a été rencontré. (par exemple%2
serait au 2ème et dernierRewriteCond
qui ont été satisfaites)-
R=301
signifie que c'est une redirection permanente - qui stocke la redirection dans le cache du navigateur. Être prudent lors de l'essai d' - vous aurez besoin de supprimer le cache du navigateur entre les changements de code ou la redirection ne sera pas mise à jour. Probablement le laisser jusqu'à ce que vous savez que la règle fonctionne.-
L
à-dire le dernier de redirection à suivre dans ce.htaccess
fichier vous n'aurez pas besoin de cela pour obtenir de la règle de travail depuis la ligne 1 ne seront pas atteints une fois que le navigateur est redirigé vers l'url est correcte. Sans la ligne 1 ouL
la RewriteRule entraînera un permanent de la boucle (depuis l'adresse URL de redirection va continuer à satisfaire lesRewriteRule
conditions). Cependant, c'est une bonne idée d'ajouter laL
de toute façon si vous avez d'autres règles à la suite de la favicon règles - car sur un favicon.ico demande, vous pouvez (probablement) ignorer les règles suivantes.Vous pouvez tester
.htaccess
règles à http://htaccess.mwl.be/Note Finale:
- être prudent que vous n'avez pas d'autres règles de réécriture dans un
.htaccess
fichier situé dans l'un de vos sous-répertoires.- par exemple, si vous mettez ce réponse dans votre
www.mysite.com/
dossier racine.htaccess
fichier, unRewriteRule (.*) xxx
type de règle dans votrewww.mysite.com/images/
dossier peut mess avec les résultats.OriginalL'auteur goredwards
Je sais que la question est balisé
.htaccess
mais, pourquoi ne pas utiliser un lien symbolique?C'est une solution qui crée de travail au lieu de gagner du temps.
Si le serveur est à la recherche de favicon.ico à la racine et vous ne pouvez pas l'avoir là, un lien symbolique serait faire...je vais mettre en œuvre ce maintenant (pour ne pas être lié à Apache) mais si il a besoin de faire sur un répertoire alors peut-être il est temps de ré-examiner la configuration...
OriginalL'auteur gregseth
Ce rapide réécriture devrait faire l'affaire:
OriginalL'auteur Marcos Placona