반응형
Apache와 Nginx 웹 서버에서 리다이렉션(redirect) 설정하는 방법
Apache 웹 서버에서 리다이렉션 설정
rewrite 모듈 활성화
httpd.conf 편집
vim httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
mod_rewrite.so 모듈 확인
httpd -M | egrep -i rewrite
$ httpd -M | egrep -i rewrite
rewrite_module (shared)
http에서 https로 리다이렉트 설정
<VirtualHost *:80>
...
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
...
</VirtualHost>
https에서 https로 리다이렉트 설정
<VirtualHost *:443>
...
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ https://scbyun.com$1 [R=301,L]
#RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
#RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
...
</VirtualHost>
리다이렉션 규칙
# HTTP에서 HTTPS로 리다이렉트
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 특정 경로에서 다른 경로로 리다이렉트
Redirect /old-page /new-page
# 도메인 리다이렉트
Redirect 301 / http://newdomain.com/
Nginx 웹 서버에서 리다이렉션 설정
http에서 https로 리다이렉션 설정
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
...
}
https에서 https로 리다이렉션 설정
server {
listen 443 ssl http2;
server_name sangchul.kr;
return 301 https://scbyun.com$request_uri;
...
}
리다이렉션 규칙
server {
listen 80;
server_name yourdomain.com;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name yourdomain.com;
# SSL 설정
ssl_certificate /etc/nginx/ssl/yourdomain.crt;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
# 나머지 HTTPS 설정
# ...
location / {
# 웹 애플리케이션 또는 리다이렉션 설정
# ...
}
}
728x90
Rewrite 코드 상세분석
지시자 | 설명 |
RewriteEngine | rewriting engine 활성화 여부 |
RewriteCond | RewriteRule과 함께 사용되는 규칙으로 RewriteCond 다음에 오는 RewriteRule은 RewriteCond에서 설정한 패턴과 일치하는 경우만, Rule을 실행한다. |
RewriteRule | 실질적인 Rewrite 규칙들을 적용하는 지시자. 사용법? RewriteRule [Input URL] [Return URL] [Input URL]에는 Perl정규식을 사용할 수 있다. |
Rewrite 지시자 (정규식)
지시자 | 설명 |
. | 다수의 한 문자 |
? | 0개 이상의 한 문자 |
* | 0개 이상의 문자 또는 문자열 |
+ | 1개 이상의 문자 또는 문자열 |
(chars) | (, ) 안의 문자 또는 문자열을 그룹으로 묶는다. 이 문자 그룹은 [Return URL]에서 $N 의 변수로 활용할 수 있다. |
^ | 문자열의 첫 문(열)을 지정 |
$ | 문자열의 끝 문자(열)을 지정 |
\(역슬래쉬) | 정규표현식에서 특별한 의미로 사용되는 문자의 특수기능을 제거 |
{n} | 정확히 n번 반복 |
{n,} | n번 이상 반복 |
{n,m} | n 이상 m 이하 반복 |
[chars] | 문자들의 범위 또는 표현할 수 있는 문자들을 설정합니다. |
예) [a-z] : a 부터 z 까지의 소문자, [tT] : 소문자 t 또는 대문자 T
Rewrite Subrutine 지시자
지시자 | 설명 |
L | 뒤구문 여부를 무시하고 그 줄에서 끝낸다. |
N | 새로운 Rule이 시작된다는 의미. |
R | Redirection. 무조건 넘긴다. 뒤 주소로 넘긴다는 의미. |
NC | 대소문자를 구별하지 않는다. |
OR | 프로그래밍의 or와 유사. |
QSA | Cond의 내용을 지난 결과에 덧붙인다. |
NE | Out 될 값에 특수문자가 HexCode로 되어 포함된 경우. |
예시의 R=301은 moved permanently. 즉, 그 주소로 영구 이동하는 것을 나타낸다.
참고URL
- 웹서버에서 http를 https(SSL)로 리다이렉트하는 방법 : https://scbyun.com/861
- URL 재작성 지침서 : https://httpd.apache.org/docs/2.2/ko/misc/rewriteguide.html
- Converting rewrite rules : http://nginx.org/en/docs/http/converting_rewrite_rules.html
- 아파치 http -> https 리다이렉트 설정하기. Rewrite 엔진 : https://cheershennah.tistory.com/157
728x90
반응형
'리눅스' 카테고리의 다른 글
우분투에서 Ruby 2를 설치하는 방법 (0) | 2022.12.23 |
---|---|
우분투에서 Samba 서버를 설정하고 구성하는 방법 (0) | 2022.12.16 |
apt/apt-get command (0) | 2022.11.21 |
php 서버 정보 확인 (0) | 2022.11.21 |
stormssh 설치 후 collections 모듈 에러 (0) | 2022.11.16 |