문제

루트 디렉토리에서 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]

다른 팁

Favicon의 경우 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 리디렉션은 올바른 Favicon URI에 브라우저 캐시에 작성됩니다.이 라인은 브라우저가 올바른 URI를 요청하는 경우 규칙을 처리하지 않습니다).
- [NC

RewriteCond %{HTTP_HOST} (.+) :
- http 호스트 이름을 검색 - 호스트 이름을 하드 코딩하지 않으려면 RewriteRule
- 이는 로컬/테스트 서버와 프로덕션 서버간에 .htaccess 파일을 문제없이 복사 할 수 있음을 의미합니다 (또는 새 사이트베이스 URL을 다시 작성해야 함).

RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L] :
- ^ Regex의 시작입니다
- (.*) 와일드 카드 그룹입니다. 즉, 단어 앞에 0 또는 여러 문자가있을 수 있음을 의미합니다. favicon URI에서 (즉, 루트 디렉토리 또는 모든 하위 디렉토리가 URI 매치에 포함될 수있는 부분입니다)
- \.(ico|gif|png|jpe?g) URI 확장이 어떤 것과 일치하는지 확인합니다 .ico, .gif, .png, .jpg, .jpeg
- $ Regex의 끝입니다
- http://%1/images/favicon.ico 리디렉션 URL- 그리고 이전에서 검색 한 호스트 이름을 주입합니다. RewriteCond. 주목하십시오 %1 a는 a입니다 재 작성된 역전 이것은 그것이 마지막이라는 것을 의미합니다 RewriteCond 그것은 충족되었습니다. (예 : %2 2 위 일 것입니다 RewriteCond 만난 것)
- R=301 브라우저 캐시에 리디렉션을 저장하는 영구 리디렉션임을 의미합니다. 테스트 할 때주의하십시오. 코드 변경 또는 리디렉션이 업데이트되지 않는 브라우저 캐시를 삭제해야합니다. 규칙이 작동한다는 것을 알 때까지 이것을 남겨 두십시오.
- L 이것에서 따라야 할 마지막 리디렉션을 의미합니다. .htaccess 파일 - 브라우저가 올바른 URL로 연결되면 1 행이 충족되지 않으므로 규칙을 작동시키기 위해이 문제가 필요하지 않습니다. 라인 1 또는 L 다시 쓰레기는 영구 루프를 초래합니다 (리디렉션 URL이 계속 만족하므로 RewriteRule 정황). 그러나 추가하는 것이 좋습니다. L 어쨌든 favicon 규칙에 따라 다른 규칙이있는 경우 - favicon.ico 요청에 따라 다음 규칙을 무시할 수 있습니다.

당신은 테스트 할 수 있습니다 .htaccess 규칙 http://htaccess.mwl.be/

최종 참고 :
- 다른 rewriterule이 없도록 조심하십시오. .htaccess 하위 다이렉터에 위치한 파일.
- 예 : 당신이 넣으면 이것 당신의 대답 www.mysite.com/ 루트 폴더 .htaccess 파일, a RewriteRule (.*) xxx 귀하의 규칙을 입력하십시오 www.mysite.com/images/ 폴더는 결과를 엉망으로 만들 수 있습니다.

RewriteEngine on

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

나는 질문이 태그가 붙었다는 것을 알고 있습니다 .htaccess그러나 왜 Symlink를 사용하지 않습니까?

ln -s images/favicon.ico favicon.ico

이 빠른 재 작성은 다음을 수행해야합니다.

RewriteRule ^(.*)favicon.ico /images/favicon.ico
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top