「.htaccess」 서버 사이드 리디렉션을 사용할 수 없을때 대처방법?

URL 변경시 또는 URL 정규화 할 때는 리디렉션을 사용합니다. 아파치 서버의 경우 .htaccess 등을 사용하여 설정하는데, 서버 사이드 리디렉션 사용할 수 없는 경우에 대한 설명입니다. URL정규화와 리디렉션에 관련되 내용이 함께 설명 됩니다.

Q : 왜 리디렉션을 하나요?

검색엔진최적화(SEO)를 하는데 있어서, 리디렉션이라는 말을 종종 들어 본 적이 있을 것입니다. 우선 어떤 경우 리디렉션을 하는지 알아보겠습니다. 리디렉션을 실시하는 것은 예를 들면 다음과 같은 경우입니다.
• Web 사이트의 URL을 변경 한 경우
• URL을 정규화하는 경우
각 필드를 간단히 리다이렉트 이유를 설명합니다.

A : Web 사이트의 URL을 변경 한 경우

도메인을 변경하거나 동일한 도메인에서 디렉토리와 파일(URL)을 변경하는 경우입니다. 이 경우 다음과 같은 이유에서 리디렉션을 합니다.
• 이전 URL에서 검색 엔진의 평가를 이전 받음
• 이전 URL의 백링크 리소스를 모두 인계 받음
• 이전 URL에 접속 한 사용자와 크롤러가 올바른 URL로 액세스 할 수 있도록 유도

A : URL정규화의 경우

예를 들어 www의 유무와 index.html • index.php 등의 유무의 URL이 있는 경우입니다. 검색 엔진은 웹사이트를 URL 단위로 평가하기 때문에 www의 유무 등으로 인해 다양한 URL이 존재하게 되면 검색엔진으로부터 올바른 평가를 얻지 못할 수 있습니다. 그래서 그렇게 분산 된 URL을 하나로 통합하는 일을 URL정규화라고 합니다. 이 정규화에 사용되는것이 리디렉션입니다.

상기의 두 경우 모두 “영구 이전”을 나타내는 301 리디렉션 을 사용하는 것이 중요합니다. 리디렉션에는 301이외에도 302 리디렉션 이 있는데요, 이것은 “임시 이전”을 의미하기 때문에 기존의 사이트가 남아있다고 판단하고, 기존 웹사이트에 방문하여 평가를 합니다. 따라서 새로운 웹사이트가 생겼더라도, 이전 사이트가 평가되어버리기 때문에 정규화가 되지 않습니다.

리디렉션을 활성화하는 방법

일반적으로 리디렉션은 서버 측에서 설정합니다. Apache의 경우 .htaccess라는 파일을 nginx의 경우 nginx.conf라는 파일을 이용하여 설정합니다. 또한, IIS의 경우 마법사의 안내에 따라 설정을 할 수 있습니다.

.htaccess 예

http://www.abcde.com/의 URL에서 www 있고, index.html없는 경우 정규화 하는 예입니다.

 RewriteEngine on 
 RewriteCond % {HTTP_HOST} ^ abcde \ .com 
 RewriteRule (. *) http://www.abcde.com/$1 [R = 301, L] 
 RewriteCond % {THE_REQUEST} ^. * / index.html 
 RewriteRule ^ ( *) index.html $ http://www.abcde.com/$1 [R = 301, L]

 Apache에서의 설정 파일인 .htaccess를 사용할 수 없게 되어 있거나, 또는 .htaccess 사용할 수 있으나 리디렉션을 사용할 수 없도록 셋팅된 경우가 있습니다. 이 경우 Apache 설정 파일 httpd.conf의 설정을 변경하여 .htaccess를 사용할 수 있게 됩니다.

이 httpd.conf라는 파일의 AllowOverride라는 항목을 All합니다.

 AllowOverride All

또한 RewriteEngine를 이용하려면 mod_rewrite라는 모듈을 활성화해야 합니다. 같은 httpd.conf의

 LoadModule rewrite_module modules / mod_rewrite.so

행이 #로 주석 처리되지 않았는지 확인하십시오.
또한 httpd.conf의 설정을 바꾼 경우 Apache를 다시 시작할 필요가 있으므로 주의해야 합니다.

이러한 설정은 서버의 root 권한이 없으면 사용할 수 없습니다. 자신 서버와 VPS 등 일부를 제외하고 공용 서버를 사용하는 경우는 설정할 수 없는 경우가 많기 때문에, 서버 관리자 등을 확인하는 것이 좋습니다.

리디렉션을 사용할 수없는 경우

리디렉션 .htaccess 등 서버 측 설정하는 것이 이상적이지만, 서버의 사양이나 CMS의 사양 등으로 리디렉션을 사용할 수 없는 경우가 있다고 생각합니다. 그 대안을 몇 가지 소개하고자 합니다.

rel = “canonical”

rel = “canonical”은 유사한 내용을 가진 여러 URL 중에서 검색 엔진에 우선 인식해주었으면 하는 페이지를 알려주기 위한 것입니다. 이 canonical에서 리디렉션 하고자 했던 URL을 지정합니다. 이렇게 하면 Google에 대해 “우선되어야 하는 URL은 이쪽입니다”라고 표시 할 수 있습니다.

rel = “canonical”의 기술 예

그러나 rel = “canonical”은 어디 까지나 Google의 제안으로 처리됩니다. 따라서 반드시 검색 결과가 canonical 설정 대로 나타나지 않을 수 있으니 주의가 필요합니다. 그리고 301리디렉션과 동일한 기능은 아니라는 점은 기억해 두시기 바랍니다.

<link rel = "canonical" href = "http://www.abcde.com"/>

PHP 등 프로그램에 의한 리디렉션 대응

PHP 등의 프로그램도 301 리디렉션을 할 수 있습니다. 프로그램에서 셋팅해두었기 때문에 따로 설정할 필요가 있습니다. 검색엔진최적화(SEO)에서는 서버 사이드 설정과 같은 결과를 얻을 수 있습니다.

PHP의 경우 설정 예

< ? PHP 
 header ( "HTTP / 1.1 301 Moved Permanently"); 
 header ( "Location : http://www.abcde.com"); 
 exit (); 
 ?>

meta refresh

meta 태그 중 하나로, meta refresh라는 것이 있습니다. 이것을 이용하면 지정된 시간(초) 후 지정된 URL로 리디렉션됩니다. 이 meta refresh를 이용한 리디렉션은 보통 302 리디렉션 합니다. 0초 meta refresh의 “0”은 일단 301 리디렉션으로 처리된다는 얘기도 있습니다만, 확실하지는 않습니다. Google은 meta refresh를 권장하지 않으므로 사용하지 않는 것이 좋습니다.

meta refresh 사용 예

<meta http-equiv = "refresh"content = "0; URL = http : //www.hoge.com">

JavaScript 의한 설정

JavaScript도 location.href와 location.replace 같은 함수를 사용하여 리디렉션을 사용 할 수 있습니다. 그러나 Google은 JavaScript를 로드 할 수 없기 때문에, 올바르게 리디렉션이 되었는지를 구글은 알 수 없습니다. meta refresh와 함께, 검색엔진최적화에서는 잘 사용하지 않는 방법입니다.

정리

• 리디렉션은 가능한 .htaccess 등 서버측에서 설정해야 한다.
• .htaccess는 비활성화되어있는 경우가 있으므로 주의한다.
• 리디렉션 할 수 없는 경우는 rel = “canonical”을 사용한다.
• PHP 등의 프로그램에서 리디렉션을 사용 할 수 있다.
• meta refresh와 JavaScript 리디렉션 방법은 권장하지 않음.

Please follow and like us:

Social media & sharing icons powered by UltimatelySocial
RSS
Facebook
Facebook
Google+
Google+
http://www.aun-korea.com/%E3%80%8C-htaccess%E3%80%8D-%EC%84%9C%EB%B2%84-%EC%82%AC%EC%9D%B4%EB%93%9C-%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%A0-%EC%88%98-%EC%97%86%EC%9D%84%EB%95%8C-%EB%8C%80/">
SHARE
YouTube
YouTube
NaverPost
NaverBlog