📖
Apache에서 특정 폴더 또는 파일 만 HTTP로 접근하게 만드는 .htaccess 설정 (HTTP로 강제 리디렉션)

페이지 정보

본문

https로 접속되는 사이트에서 특정 폴더만 http로 강제 접속하도록 할 수 있습니다.
이를 위해 .htaccess 파일을 수정하여 특정 경로에 대해서만 HTTP 프로토콜을 사용하도록 할 수 있습니다.
.htaccess 코드
"예외 경로만 제외하고 나머지는 전부 HTTPS로 강제 리디렉션"하는 표준적 구성입니다[code]RewriteEngine On

# 1. 예외 경로: HTTPS 강제 리디렉션에서 제외
RewriteCond %{REQUEST_URI} ^/특정 폴더/
ewriteRule ^ - [L]

# 2. 나머지 모든 요청은 HTTPS로 강제 리디렉션
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]📁 이 코드는 사이트 루트에 있는 .htaccess 파일에 들어가야 합니다.
💡RewriteCond에서 여러 경로 조건을 동시에 처리하려면 정규식으로 OR 조건을 사용하면 됩니다.[code]RewriteCond %{REQUEST_URI} ^/(myhome/broadcast/(ply|live)|media/)[/code]🔍 설명:
^/(myhome/cast/(ply|live)|media/)
→ /myhome/cast/ply, /myhome/cast/live, /media/ 시작 경로 모두 매칭됩니다.
RewriteRule ^ - [L]
→ 조건에 맞는 경우 아무 작업 없이 종료 ([L]: 마지막 규칙)
해당 경로에 대해서는 rewrite 중지 (즉, 아래 HTTPS 강제 규칙은 무시됨)

필요하다면 /media 하위 경로까지 포함하도록 조건을 좀 더 세분화할 수도 있습니다.
예: /media/something/까지 포함하려면 ^/(myhome/cast/(ply|live)|media/.*) 형태도 가능합니다.

✅ 특정 파일(ply.php)만 HTTP로 접근하게 만드는 .htaccess 설정[code]RewriteEngine On

# ply.php를 HTTPS로 요청한 경우 → HTTP로 리디렉션
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/cast/ply\.php$
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 그 외 모든 요청은 HTTPS로 리디렉션
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/cast/ply\.php$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]
📌 설명
첫 번째 블록은 ply.php 파일을 HTTPS로 접속했을 때 → HTTP로 보내줍니다.
두 번째 블록은 나머지 모든 파일이 HTTP로 접속됐을 때 → HTTPS로 바꿔줍니다.
정규표현식에서 .은 아무 문자이므로 반드시 \. 으로 escape 해야 합니다.
RewriteCond %{REQUEST_URI}는 쿼리스트링 제외한 경로만 비교합니다.

✅ 주의사항
.htaccess 파일은 반드시 사이트 루트 디렉터리 또는 해당 폴더에 위치해야 합니다.
AllowOverride All이 Apache 설정에 적용되어 있어야 .htaccess가 동작합니다.
리디렉션 캐시 방지를 위해 브라우저 쿠키/캐시 지우고 확인하세요.

✅ 문서 2개만 HTTP 접근 허용 예시 (pro.php, proxy.php)[code]RewriteEngine On

# ply.php 또는 proxy.php를 HTTPS로 접속한 경우 → HTTP로 리디렉션
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/cast/(pro\.php|proxy\.php)$
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 그 외 모든 요청은 HTTP면 → HTTPS로 리디렉션
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/cast/(pro\.php|proxy\.php)$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]✅ 추가 문서가 더 있다면?
(pro\.php|proxy\.php|다른문서\.php) 형식으로 계속 추가하시면 됩니다.
예: ^/cast/(pro\.php|proxy\.php|audio\.php)$

✅ 실전 .htaccess 설정 예제
📍1. 웹 루트 또는 /home/ 폴더 .htaccess (HTTPS 유지, 단 ply 예외)[code]RewriteEngine On

# ply 폴더는 HTTPS로 리디렉션하지 않음
RewriteCond %{REQUEST_URI} ^/home/cast/ply/
RewriteRule ^ - [L]

# 그 외는 HTTPS로 리디렉션
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]
📍2. /home/cast/ply/.htaccess (HTTP로 강제 리디렉션)[code]RewriteEngine On

# HTTPS일 경우 HTTP로 리디렉션
RewriteCond %{HTTPS} on
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]✅ ply 폴더 안에만 .htaccess를 따로 두는 이유는, 특정 디렉토리만 예외 처리하고 관리하기 쉽게 하기 위함입니다.

✅ 추가 확장 예시
다른 폴더들도 제외하고 싶을 때는 이렇게 확장 가능해요:[code]RewriteCond %{REQUEST_URI} ^/home/cast/(ply|live|test|demo)/[/code]
✅ 1. 특정 확장자만 HTTPS 리디렉션 제외
예를 들어 .m3u8, .ts 파일 요청만 HTTP로 유지하고 싶다면:[code]# 확장자가 .m3u8 또는 .ts 인 경우 HTTPS로 리디렉션하지 않음
RewriteCond %{REQUEST_URI} \.(m3u8|ts)$
RewriteRule ^ - [L]

# 그 외는 HTTPS로 리디렉션
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]✅ .m3u8, .ts 확장자를 가진 스트리밍 파일은 HTTP 유지
✅ 나머지 요청은 HTTPS로 이동

✅ 2. 특정 IP만 HTTPS 리디렉션 제외
예: 192.168.0.100 사용자만 HTTP로 접속 허용하고, 나머지는 HTTPS로 리디렉션[code]# 특정 IP는 리디렉션 제외
RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.100$
RewriteRule ^ - [L]

# 그 외는 HTTPS 리디렉션
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]✅ 내부 IP만 HTTP 접속 가능
✅ 외부 사용자는 항상 HTTPS로 리디렉션

✅ 3. 조합: 경로 + 확장자 + IP 조건[code]# 경로 + 확장자 + IP 조합 예외 처리
RewriteCond %{REQUEST_URI} ^/home/broadcast/live/
RewriteCond %{REQUEST_URI} \.ts$
RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.100$
RewriteRule ^ - [L]

# 그 외는 HTTPS로 리디렉션
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code].ts나 .m3u8 스트리밍은 낮은 레이턴시를 위해 HTTP 유지할 수 있지만,
보안 상 전체 HTTPS 전환이 권장됩니다.

🚀 일반 PHP 사이트에서 HTTPS를 기본으로 사용하되,
특정 경로(/myhome/cast/ply, /myhome/cast/live, /media/)는
HTTP로 유지하고 싶은 경우에 적합한 .htaccess 예시입니다.
✅ .htaccess 전체 구성 예시[code]RewriteEngine On

# 1. HTTP 예외 경로 (해당 경로는 HTTPS로 강제 리디렉션하지 않음)
RewriteCond %{REQUEST_URI} ^/(myhome/cast/(ply|live)|media/.*)
RewriteRule ^ - [L]

# 2. 나머지 모든 요청은 HTTPS로 강제 리디렉션
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301][/code]✅ 의도한 동작:
/myhome/cast/ply HTTP 유지
/myhome/cast/live/abc HTTP 유지
/media/anything.mp3 HTTP 유지
/bbs/board.php?bo_table=xxx HTTPS로 강제 이동
/index.php HTTPS로 강제 이동

✅ 위치
이 .htaccess는 Apache 2.4 기준으로 DocumentRoot (htdocs/ 또는 public_html/)에 위치해야 합니다.
mod_rewrite가 켜져 있어야 하고, AllowOverride All 설정도 필요합니다 (httpd.conf 또는 apache2.conf).

댓글목록

등록된 댓글이 없습니다.


자료 목록
번호 제목 날짜
184
🫧
05-01
183
🫧
04-30
182
🫧
04-30
181
🫧
04-28
180
🫧
04-27
179
🫧
04-26
178
🫧
04-26
177
🫧
04-24
176
🫧
04-23
175
🫧
04-23
📖
🫧
04-22
173
🫧
04-17
172
🫧
04-17
171
🫧
04-16
170
🫧
04-15

🔍 검색

회사소개 개인정보처리방침 서비스이용약관
Copyright © rainbowgarden.shop All rights reserved.