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| ......