.htaccess 파일에서 긴 줄을 나눕니다.


10

내 .htaccess 파일에 Content-Security-Policy 헤더를 설정하고 있으며 관리하기가 매우 긴 단일 행으로 커졌습니다. 이 줄을 더 관리하기 쉬운 하위 문자열로 나누는 방법이 있습니까?

사소한 예로서, 헤더를 다음과 같이 설정한다고 가정 해보십시오.

Header set Content-Security-Policy "deafult-src http://domainA.com; script-src http://domainB.com"

나는 명백한 파괴 문제없이 다음과 같은 방법으로 내 구체적인 사건을 성취 할 수 있습니다.

Header append Content-Security-Policy "default-src http://domainA.com;"
Header append Content-Security-Policy "script-src http://domainB.com"

그러나 문자열에 쉼표를 삽입하므로 응답에 추가 문자를 추가하지 않고 일반적으로 적용 할 수있는 더 나은 대답이 있는지 궁금합니다.

이상적인 것은 문자열을 작은 부분으로 나눌 때 사용할 수있는 연결 문자가 있다면

Header set Content-Security-Policy "default-src http://domainA.com;"
\" script-src http://domainB.com"

또는

Header set Content-Security-Policy "default-src http://domainA.com;"^
" script-src http://domainB.com"

또는

Header set Content-Security-Policy "default-src http://domainA.com;"
+" script-src http://domainB.com"

또는 변수를 설정하고 내용을 덤프하여 다음과 같은 작업을 수행 할 수 있다면

a="default-src http://domainA.com;"
b=" script-src http://domainB.com"
Header set Content-Security-Policy $a$b

그것은 훨씬 더 다루기 쉬울 것입니다.

nginx 에 대해 비슷한 주제가 있었으며 결론은 단지 긴 행을 유지하는 것이 었습니다. 아파치도 마찬가지일까요?


각 하위 문자열이 트릭을 수행 한 후 Shift 키를 누르고 Enter 키를 누릅니까?
StixO

@StixO 아니요,이 문제는 아파치가 conf 파일에서 문자열을 구문 분석하는 방법과 관련이 있습니다. 일반적으로 (보통 HTML) 편집기는 이러한 단축키를 사용하여 줄 바꿈 (예 : <br />)과 단락 나누기 (</ p>)를 구분합니다. 파싱되는 마크 업 형식과 편집기에 따라 다릅니다. 아파치 conf 파일은 순수 텍스트이므로, 단락 사이에 구분이 없습니다 (modifier에 상관없이 enter는 \ n 또는 \ r와 같은 단일 시스템 종속 캐리지 리턴 문자를 생성합니다).
MaxPRafferty

답변:


14

다음이 작동합니다.

 Header set Content-Security-Policy "default-src http://domainA.com; \
      script-src http://domainB.com"

나는 이것을 테스트하고 얻었다 Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration.
kasperd

1
@kasperd 실행해야합니다a2enmod headers
MaxPRafferty

@BazzaDP 재미있는! 이로 인해 서버가 이스케이프 된 줄 바꿈을 보내 게 될 것으로 기대하지만 원하는 방식으로 연결되는 것처럼 보이고 클라이언트 관점에서는 이해할 수 없습니다.
MaxPRafferty

1
와우, 실제로, 이런 식으로 공백 문자를 벗어날 수 있습니다. \ <tab> 작업도 확인했습니다. .htaccess는 결코 그렇게 좋아 보이지 않을 것입니다!
MaxPRafferty

1
허, 심지어 정규 표현식을 깨기 위해 노력합니다! @ BazzaDP, 당신은 내가 언급 한 nginx 질문 에이 답변을 드롭하고 싶을 수도 있습니다.
MaxPRafferty

5

예-백 슬래시는 줄 연속으로 작동합니다 . 이것은 [ https://httpd.apache.org/docs/2.4/configuring.html#page-header] 의 Apache 2.4 설명서에 포함되어 있습니다.

중요한 규칙 :

  1. 줄 안의 공백은 좋습니다. 여러 개의 탭과 공백;
  2. 마지막 문자를 제외한 모든 행의 마지막 문자 는 백 슬래시 여야합니다 . <
  3. 마지막 줄은 백 슬래시로 끝나서 는 안됩니다 .
  4. Apache 주석 문자 (#) 사용하여 줄을 주석 처리 할 수 없습니다 .

이러한 규칙을 준수하지 않으면 서버는 오류 500으로 응답합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.