2009-03-27 7 views
4

내가 좋아하는 아파치 설정에서 리디렉션을Apache에서 302 리디렉션에 헤더를 추가하는 방법은 무엇입니까?

리디렉션 임시 /foo.xml 나는이 PHP에서 사소한 것이 302에 CDN에 대한 만료 및 m-캐시 헤더를 추가하려고 http://www.baz.com/foo.xml

,하지만 아파치 설정 파일에서이 작업을 수행해야합니다. ExpiresDefault "액세스 플러스 십분"

는 ExpiresActive하지만 이것은 단지 302 리디렉션을 위해 작동하지 않을 것 같다

은 일반적으로 이것은 다음과 같이 이루어집니다. 어떤 제안?

+1

Apache 구성? 어떤 프로그래밍 언어를 통해? –

답변

0

Apache 용 mod_headers 모듈을 확인하십시오.

아마 같은 것을 : (이 접수 된 이후) 내가 제대로 아래 지적 수정했습니다 것을 반영하기는 항상 키워드를 추가,이 답변을 편집 한

<Location /foo.xml> 
    Redirect temp /foo.xml http://www.baz.com/foo.xml 
    Header always set ExpiresActive On 
    Header always set ExpiresDefault "access plus 10 minutes" 
</Location> 

.

+8

리디렉션이 완료 될 때 헤더가 추가되지 않기 때문에 이것을 제외하고 실제로는 작동하지 않습니다. –

+0

아파치 2.2에서 작동하지 않습니다. – Thomasleveil

14
<Location /foo.xml> 
    Redirect temp /foo.xml http://www.baz.com/foo.xml 
    Header always set ExpiresActive On 
    Header always set ExpiresDefault "access plus 10 minutes" 
</Location> 

HTTP 302 응답 (실제로 모든 HTTP 응답 포함)에서도 작동합니다. "항상"키워드가없는 지시문은 성공한 응답, 즉 HTTP 2xx 응답과 함께 작동합니다.

1

env=HTTPS을 사용하여 헤더를 설정할 때이를 어렵게 만드는 Apache 2.2의 이상한 버그 (Apache 2.2.15에서 확인 됨)에주의하십시오. 어떤 이유로 든 env=HTTPS이 리디렉션을 제어하는 ​​데 사용되는 경우에도 RewriteCond %{HTTPS}을 사용하더라도 리디렉션 중 실행되지 않습니다. env=X_HTTPS이 평가 될 때 그래서 HTTP 엄격한 전송 보안 (HSTS)을 가능하게 내 구성, 나는 HTTPS와 같은 값을 가지고 X_HTTPS라는 환경 변수를 만들한다 RewriteRule을 사용하여 사용하지만, 인은 null로 설정되지 않습니다

SetEnv HSTS "max-age=31536000; includeSubDomains; preload" 

# For some reason in Apache 2.2, HTTPS env variable is not available during redirects 
RewriteCond %{HTTPS} on 
RewriteRule ^.*$ - [ENV=X_HTTPS:%{HTTPS}] 
# Set HSTS Header if the page is delivered via SSL 
Header always set Strict-Transport-Security %{HSTS}e env=X_HTTPS 

# Redirect SSL-only non-www page to www and quit 
RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteRule ^(.*)$ https://www.%{SERVER_NAME}%{REQUEST_URI} [R=303,L] 

# Redirect ANY non-SSL page to SSL 
RewriteCond %{HTTPS} !on 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=303,L] 
+0

이것은 정확히 내가하려는 일입니다. 불행히도이 솔루션은 나를 위해 작동하지 않습니다. 리디렉션에서 작동하는 환경 변수가없는 것 같습니다. 내가 찾은 유일한 해결책은'env ='절을 생략하는 것인데, 작동하지만 Strict-Transport-Security 헤더를 평범한 HTTP 요청에 보냅니다. –

관련 문제