Вопрос

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

Это было полезно?

Решение

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

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

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

RewriteCond $0 !=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 (например, Redirect 301 напишет правильный URI Favicon в кэш браузера - и эта строка избегает обработки правила, если браузер запрашивает правильный URI)
- [NC] означает, что это не чувствителен к случаю

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

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

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

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

RewriteEngine on

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

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

ln -s images/favicon.ico favicon.ico

Этот быстрый перепись должен сделать свое дело:

RewriteRule ^(.*)favicon.ico /images/favicon.ico
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top