.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]
на фавикон на 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/
папка может испортить результаты.
Я знаю, что вопрос с тегами .htaccess
но, почему бы не использовать симлинк?
ln -s images/favicon.ico favicon.ico