.htaccess-перенаправление favicon

как перенаправить все запросы на favicon.ico в корневом каталоге или любом подкаталоге к /images / favicon.ico

5 ответов


попробуйте это правило:

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

редактировать и favicon.ico С произвольной глубиной сегмента пути:

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

RewriteEngine on

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

на фавикон на www.mysite.com/images/favicon.ico наиболее надежным методом было бы:

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]

объяснение:

RewriteCond %{REQUEST_URI} !^/images/favicon\.ico [NC] :
- гарантирует, что правило перенаправления не применяется, если запрашивается правильный URI (например, перенаправление 301 напишет правильный URI favicon в кэш браузера - и эта строка избегает обработки правила, если браузер запрашивает правильный URI)
- [NC] означает, что он не чувствителен к регистру

RewriteCond %{HTTP_HOST} (.+) :
- получение хоз имя-чтобы избежать жесткого кодирования имени хоста в RewriteRule
- это значит, что ты можешь скопировать свой .файл htaccess между местными/тестовый сервер и сервер без проблем (или нужно заново писать свой новый базовый URL сайта на ваш RewriteRule)

RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L] :
- ^ начало регулярного выражения
- (.*) - это подстановочная группа - это означает, что перед словом в URI (т. е. это та часть, которая позволяет корневому каталогу или любым подкаталогам быть включенными в соответствие URI)
- \.(ico|gif|png|jpe?g) проверяет, что расширение URI соответствует любому из .ico, .gif, .png, .jpg, .jpeg
- $ конец регулярного выражения
- http://%1/images/favicon.ico является url-адресом перенаправления - и он вводит имя хоста, которое мы получили в предыдущем RewriteCond. Обратите внимание, что %1 называется a ссылка RewriteCond это означает, что последний RewriteCond это было выполнено. (напр %2 будет 2-й-последний RewriteCond чтобы были выполнены)
- R=301 означает, что это постоянное перенаправление, которое сохраняет перенаправление в кэше браузера. Будьте осторожны при тестировании - вам нужно удалить кэш браузера между изменениями кода или перенаправление не будет обновляться. Возможно, оставим это, пока не узнаем, что правило работает.
- L означает, что его последнее перенаправление будет следовать в этом .htaccess file-вам не понадобится это, чтобы заставить правило работать, так как строка 1 не будет выполнена как только браузер будет направлен на правильный url. Без строки 1 или L в RewriteRule выльется в постоянный цикл (с URL переадресации будет держать удовлетворяя RewriteRule условий). Тем не менее, это хорошая идея, чтобы добавить L в любом случае, если у вас есть другие правила, следующие правилам favicon - так как на favicon.запрос ico, вы можете (вероятно) игнорировать любые следующие правила.

вы можете проверить .htaccess правила http://htaccess.mwl.be/

Конечная Нота:
- будьте осторожны, чтобы у вас не было другого переписчика в .htaccess файл, расположенный в любом из ваших подкаталогов.
- например, если вы положили этой ответ в ваш www.mysite.com/ корневую папку .htaccess файл, a RewriteRule (.*) xxx введите правило в свой www.mysite.com/images/ папка может испортить результаты.


эта быстрая перезапись должна сделать трюк:

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

Я знаю, что вопрос с тегами .htaccessно, почему бы не использовать симлинк?

ln -s images/favicon.ico favicon.ico