서기록

2023-11-14 화요일 / seogilang

 워드프레스 사용 중 숫자로 된 주소를 한글로 변경한다거나 주소에 카테고리를 변경하거나 넣었다가 빼는 등 고유주소를 변경하는 경우가 있다.

 고유주소를 변경하게 되면 기존에 사용하던 주소가 변경되기 때문에 404 에러가 발생할 수 있는데 이를 방지하고자 한다면 301 리디렉션 설정을 해야 한다.

 설정을 위한 방법으로는 플러그인을 사용하는 방법, functions.php에 코드를 추가하는 방법, 서버 설정을 변경하는 방법이 있다.

 

워드프레스 고유주소 변경 후 리디렉션 설정

리디렉션 설정 값의 이해

 리디렉션 설정은 각 방법마다 차이가 있지만 설정에 사용되는 값은 같기 때문에 먼저 값을 잘 이해해야 한다.

 

Source URL

 변경 전 주소 부분.

 [https://seogilog.com/1]을 다른 주소로 리디렉션 한다면 홈페이지 주소는 제외하고 [/1] 값만 넣으면 되며, [https://seogilog.com/it-info/글ID]의 주소에서 카테고리 값인 [it-info]를 삭제하거나 변경하고자 한다면 하위에 모든 주소를 리디렉션 해야 하므로 [^it-info(.+)$]와 같은 정규식을 사용하면 된다.

 

Target URL

 리디렉션 할 주소 부분.

 정규식을 사용하여 여러 주소를 리디렉션하는 경우 글ID 부분을 [/$1]로 넣어주면 된다.

 

리디렉션 유형

 301(영구 리디렉션), 302(임시 리디렉션), 307(임시 리디렉션) 중 선택하면 된다.

 302와 307은 둘 다 임시 리디렉션이지만 URL 유지 여부의 차이가 있는데 어차피 고유주소를 변경했다면 영구 리디렉션에 해당하기 때문에 301만 알고 있으면 된다.

 

플러그인으로 리디렉션 설정.

 리디렉션 기능만 있는 플러그인을 사용해도 되고 rankmath 같은 seo 플러그인은 리디렉션 기능을 포함하기 때문에 이를 사용해도 된다.

 여기서는 rankmath 플러그인으로 리디렉션 설정을 했지만 다른 플러그인을 사용하더라도 큰 차이는 없을 것이다.
(위에서 소개한 3가지 값만 이해했다면 어렵지 않다)

 

 [리디렉션] 화면으로 이동하여 [새로 추가] 버튼을 클릭.

 소스 URL(Source URL)을 넣고 1:1 리디렉션이라면 [일치] 하위 주소를 모드 리디렉션한다면 [정규 표현식]을 선택.

 수신처 URL(Target URL), 리디렉션 유형을 넣고 [리디렉션 추가] 버튼을 클릭하면 된다.

워드프레스 고유주소 변경 후 리디렉션 설정

 

functions.php으로 리디렉션 설정.

 functions.php에 코드를 추가해서 리디렉션 것도 가능하다.

 다만 관리나 편의성은 플러그인이 편하고, 성능 부분으로 보면 서버 설정을 변경하는 것이 더 좋기 때문에 그다지 추천하는 방법은 아니다.

 플러그인이 작동하지 않고 서버 설정을 할 수 없는 경우나 특수한 목적이 있는경우 사용할만한 방법이며 아래에 제시한 코드도 작성하기 나름이기 때문에 그냥 functions.php으로도 리디렉션이 가능하구나 정도로 보자.

▷ 1:1 리디렉션 코드

function custom_redirect() {

 if ($_SERVER[‘REQUEST_URI’] == ‘/it/테스트‘) {

  wp_redirect(‘https://seogilog.com/테스트‘, 301);

  exit;

  }

}

add_action(‘template_redirect’, ‘custom_redirect’);

 

▷ 정규식 리디렉션 코드

function custom_redirect() {

 $request_uri = $_SERVER[‘REQUEST_URI’];

 if (preg_match(‘#^/it-info/(.*)$#i‘, $request_uri, $matches)) {

  wp_redirect(home_url(‘/‘ . $matches[1]), 301);

  exit;

 }

}

add_action(‘template_redirect’, ‘custom_redirect’);

 

서버에서 리디렉션 설정.

 서버 설정을 변경하여 리디렉션 설정을 할 수 있다.

 사용하고 있는 서버가 아파치인지 nginx인지에 따라 다르지만 설정해야 하는 파일이 다르며 형식도 조금 차이가 있다.

 

아파치 서버.

 .htaccess 파일에 코드를 추가한다.

▷ 1:1 리디렉션

Redirect 301 /1 /테스트

 

▷ 정규식 리디렉션

RewriteEngine On

RewriteRule ^it-info/(.*)$ /$1 [R=301,L]

 

nginx 서버.

 nginx.conf 파일에 코드를 추가한다.

▷ 1:1 리디렉션

server {

 location = /1 {

  return 301 /테스트;

 }

}

 

▷ 정규식 리디렉션

server {

 location ~* ^/it-info/(.*)$ {

  return 301 /$1;

 }

}

 

그 외 내용

 리디렉션을 사용할 일이 많다면 당연히 플러그인을 사용하는 것을 추천한다.

 그렇지 않고 한 번 설정 후 변경할 일이 없다면 서버 설정을 변경하는 것도 좋다.

 functions.php에 php 코드를 추가하는 방법은 두 방법이 되지 않거나 다른 특수한 목적이 있는 경우 사용하는 것을 추천한다.