Apache 리버스 프록시 | 와일드 카드 디렉토리 경로 재 지정 (.htaccess)

Jul 24 2017

와일드 카드 디렉토리 프록시를 사용하는 것이 어떻게 가능합니까?

나는 기본을 얻었지만 문제는 내가 속한 디렉토리, 내 htaccess 파일을 제공한다는 것입니다.

RewriteEngine on

RewriteCond %{REQUEST_URI}  !(u|api|fonts|images|css|js) [NC]

# No directory

RewriteRule ^(.*)\.(jpg|gif|png|txt|mp4|mp3|json|js|zip|bmp|tiff|webp|webm|raw|psd|jpeg|jpe|wav)(.*) http://127.0.0.1:9000/owoapi/$1.$2$3?%{QUERY_STRING} [proxy]

# One Directory
RewriteRule ^([^/]+)/(.*)\.
(jpg|gif|png|txt|mp4|mp3|json|js|zip|bmp|tiff|webp|webm|raw|psd|jpeg|jpe|wav)
(.*) http://127.0.0.1:9000/owoapi/$1.$2$3?%{QUERY_STRING} [proxy]

방문하면 domain.tld/image.png잘 작동합니다.

를 방문 할 때 domain.tld/test/image.png프록시 된 URL에 / test /가 포함되어 있기 때문에 404가 발생합니다. 어떻게 수정해야합니까?

편집 : 내가 달성하려는 것은 앞의 URL을 포함하지 domain.tld/image.png않고 대신에 액세스하는 것처럼 작동하도록 만드는 것 입니다.domain.tld/test/image.png

답변

MrWhite Jul 24 2017 at 13:05
# One Directory
RewriteRule ^([^/]+)/(.*)\. ......

이 그룹을 캡처 할 필요가 없기 때문에 처음 캡처 된 패턴 주위의 중괄호를 제거하기 만하면됩니다.

RewriteRule ^[^/]+/(.*)\. ......

이것은 하나의 하위 디렉터리 세그먼트 만 처리합니다 (내가 의도 한 것으로 가정).

또는 역 참조를에서 $1.$2$3로 변경했을 수 있습니다 .$2.$3$4

UPDATE # 1 : 위의 내용에 추가하여 앞의 "디렉토리 없음"블록을 변경하여 실제로 디렉토리 와 일치 하지 않도록해야합니다 . 현재로서는 전체 URL 경로 (예 : 디렉토리)와 일치하므로 두 번째 규칙도 처리되지 않습니다.

# No directory
RewriteRule ^(.*)\.(jpg|gif| ......

로 변경:

RewriteRule ^([^/]+)\.(jpg|gif| ......

업데이트 # 2 : 하위 디렉토리의 모든 수준을 처리하고 무시하려면 ^위의 RewriteRule 패턴 에서 문자열 앵커 (예 :)의 시작 부분을 제거하면 됩니다. 예를 들면 :

RewriteRule ([^/]+)\.(jpg|gif| ......