모바일로 접근할때 모바일도메인으로 리다이렉트 하는방법
1. JAVA 코드를 이용하는 방법

String userAgent = request.getHeader("user-agent");
boolean mobile1 = userAgent.matches(".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*");
boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*");
if(mobile1 || mobile2) {
return new ModelAndView("redirect:" + SysPropertiesUtils.getMobileUrl());
}
위 코드를 통해 사용자가 모바일로 접근하면 모바일 전용 으로 리다이렉트하는 방식으로 진행
2. Apache Rewrite 모듈 사용
2-1. mod_rewrite 활성화 확인
아파치가 설치되어있다고 가정
sudo apache2ctl -M | grep rewrite
활성회되어 있다면 rewrite_module이 출력된다.

만약 활성화되어 있지 않다면 다음 명령어로 활성화 할 수 있다.
sudo a2enmod rewrite
활성화명령어를 실행했다면 Apache 재시작을 해준다.
sudo systemctl restart apache2
2-2. 000-default.conf 설정
아파치가 설치되어있다고 가정하고
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Android|iPhone [NC]
RewriteRule ^/about/patent$ https://mobile.test.com/about/patent [R=301,L,QSD]
</VirtualHost>
RewriteEngine On #사용 설정을하고
RewriteCond %{HTTP_USER_AGENT} Android|iPhone [NC] # 모바일체크
RewriteRule ^/about/patent$ https://mobile.test.com/about/patent [R=301,L,QSD] # test.com/about/patent로 들어오면 mobile.test.com/about/patent로 리다이렉트 시킨다.
2-3. .htaccess 파일 추가
.htaccess 파일을 사용하여 동일한 설정을 추가할 수도 있다.(선택적)
sudo nano /var/www/html/.htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Android|iPhone [NC]
RewriteRule ^/about/patent$ https://mobile.test.com/about/patent [R=301,L,QSD]
3. JAVA코드방식과 Rewrite 방식이 장단점
- Apache 'mod_rewrite' 방식
장점
1. 성능 : Apache 레벨에서 리다이렉트를 처리하면 서버 애플리케이션 레벨까지 요청이 도달하지 않아 성능면에서 좋다
2. 단순함 : 설정 파일에 간단한 설정으로 리다이렉트를 구성할 수 있어, 코드 변경 없이도 설정이 가능하다
3. 유지보수 : 리다이렉트 규칙을 중앙집중식으로 관리할 수 있다.
단점
1. 복잡성 : 복잡한 리다이렉트 로직이나 조건이 필요한 경우 설정 파일에서 이를 처리하기 어렵다
2. 디버깅 : 설정 파일에서 발생하는 문제를 디버깅하기가 어려울 수 있다
- JAVA 코드에서 처리
장점
1. 유연성 : 복잡한 리다이렉트 로직을 쉽게 구현할 수 있다. 조건부 로직이나 사용자 맞춤형 리다이렉트가 필요한경우 좋다
2. 디버깅 : 코드 내에서 처리하기 때문에 디버깅이 용이하다.
3. 응답 조작 : 리다이렉트 외에도, 조건에 따라 다른 처리를 쉽게 추가할 수 있다.
단점
1. 성능 : 요청이 애플리케이션 레벨까지 도달해야 하므로, Apache에서 직접 처리하는 것 보다 성능이 저하된다
2. 복잡성 증가 : 리다이렉트 로직이 비즈니스 로직과 섞일 수 있어 코드의 복잡성이 증가한다
3. 일관성 유지 어려움 : 여러 애플리케이션에서 공통 리다이렉트 규칙을 관리하기 어렵다. 모든애플리케이션에 동일한 코드를 삽입해야 한다.
결론
성능과 단순성이 중요한경우 Apache 'mod_rewrite'를 사용하는 것이 좋아보인다.
유연성과 디버깅 용이성이 중요한 경우 Java 코드에서 사용자 에이전트를 기반으로 리다이렉트를 처리하는것이 더 좋아보인다.
'개발노트' 카테고리의 다른 글
[restAPI] @restcontroller API converter 오류 (0) | 2024.07.05 |
---|---|
[Github Pages] 깃허브 페이지(github.io) 만들기 (0) | 2024.06.25 |
[apache2] 아파치 Mod_jk 설정 (0) | 2024.05.24 |
[mysql ] Ibatis procedure OUT 파라미터 받기 (0) | 2024.04.26 |
[암호화]DB접속정보 암호화하기3(BASE64) (0) | 2024.03.05 |