it-swarm-ko.tech

포스트, 페이지, 카테고리 및 이미지 URL을위한 301 리디렉션 만들기

나는 이것이 여기에 너무 많이 물을 수 있다는 것을 두려워하므로 만약 그렇다면 배워야 할 곳을 말해 달라.

리디렉션 도움말

나는 심하게 개발 된 사이트를 정리하고 하위 디렉토리에서 Wordpress를 마이그레이션하고 있습니다. 나는 리디렉션과 정규식의 물류에 대해 머리를 감싸려고 몇 시간을 보냈다. 나는 그것에 대해 잘 알고 있지만 실제로이 일을하고 있다는 확인과 모범 사례에 대한 조언을 정말 감사 할 것입니다. 누구든지 How-To 예제를 사용하여 좋은 자습서를 알고 있다면 나도 그 점을 이해할 것입니다.

누구든지 정말로 간단한 플러그인을 알고 있다면, 나는 매우 감사 할 것입니다. Redirections 플러그인을보고 있었지만 매우 혼란 스럽습니다 (두통!). 어쨌든, 아래의 아이디어 (소스는 => 다음 타겟)는 리디렉션 지침과 스크린 샷 및 내가 꼼꼼히 조사한 다른 자습서에서 수집 한 것입니다. .htaccess 파일에 직접 넣거나 Redirections 또는 다른 플러그인을 사용하는지 여부에 관계없이 적용 할 수있을 것이라고 확신합니다.

그래서, 여기에 내가 성취하려고 노력하는 것과 그것이 어떻게되어야한다고 생각하는지가 나와 있습니다.

  1. Wordpress를 하위 디렉토리에서 루트로 이동하려면 다음과 같이하십시오.

    /wp/(.*) => /$1
    
  2. 현재 루트의 하위 디렉토리에있는 모든 페이지에 대해 한 묶음의 페이지를 하나의 최상위 페이지로 삭제 및/또는 결합하고자합니다.

    / about-directory /(.*) =>/about-top-page-products 디렉토리/(.*) 레벨 페이지 
     
    /services-directory /(.*) =>/services-top-level-page 
    
  3. 특정 패턴과 일치하는 최상위 수준의 페이지를 보려면 해당 패턴을 특정 카테고리 (예 : 파일 이름은 모두 same-Word-variation-variation.html과 같은 두 단어로 시작하고 기존 파일 이름을 유지하기를 원한다. - permalink가`.html`로 끝나도록 설정하면 이것이 가능할 것이다. , 나는 믿는다:

    /same-Word (. *) => /newcategory/$1
    

    Permalinks가`.html`로 끝나지 않으면 어떻게 규칙을 만들 수 있습니까? (나는 내가 보았다고 생각한다! "아닌"캐릭터이지만 여기에서 사용하는 방법은 확실하지 않다.) :

    /same-Word (. *) => /newcategory/$1!\.html
    
  4. 그런 다음 위와 같이 특정 페이지를 식별하고 리디렉션하면 모든 나머지 (휴지통)를 삭제하고 사용자를 홈 페이지 (또는 임의의 게시물)로 보내려고합니다.

    그래서, 여기에 2 개의 질문 :

    1. "위와 같이 이미 리디렉션 된 파일을 제외하고 모든 것에 대해"라는 규칙을 어떻게 작성합니까?

    2. 이 규칙이 지금부터 작성하는 새 페이지 및 게시물에 적용되지 않게하려면 어떻게해야합니까?

    한 가지 생각은 삭제하면 404 페이지를 찾을 수 없으므로 404 페이지 자체에 대한 규칙을 만들어야한다는 것입니다. 그게 내가하고 싶은거야?

    내가 말했듯이, 사이트는 심하게 개발되었습니다 (클라이언트가 올바른 아키텍처, SEO 등을 고려하지 않고 "페이지를 포기"하도록 지시 함) - 거의 순위가 없거나 외부/뒤로 링크가 있습니다 걱정할 필요는 없지만 SEO 및 적절한 개발 관점에서 최상의 접근 방식을 이해하고자합니다.

  5. 또한 기존 이미지 등을 wp-content 디렉토리로 이동해야합니까 아니면 기존 하위 디렉토리에 두어야합니까? 내 성향은 정말로 '깔끔한 청소'를 추구하는 것입니다. 깔끔하게 보이지 않는 모든 것을 제거하십시오. 그러나 이것이 가치있는 것보다 더 많은 일이 될지 확실하지 않습니다 ...

모든 안내에 대해 미리 감사드립니다.

5
CJN

안녕 @ CJN : ,

WordPress 디렉토리를 이동하는 첫 번째 질문은 나머지와 다르게 처리됩니다.

하위 디렉토리에서 루트로 WordPress 이동 :

_/wp-config.php_로 이동하여 다음을 추가하여 정의하십시오 (물론 _example.com_ 대신 클라이언트 도메인 사용).

_define('WP_SITEURL', 'http://example.com');
define('WP_HOME',    WP_SITEURL);
_

301 _template_loader_ 및 wp_safe_redirect()을 사용하여 리디렉션

_.htaccess_를 @ Kau-Boy 로 수정하여 나머지 질문의 대부분을 해결할 수 있습니다. 또는 PHP 에서 수행하십시오. WordPress에는 _template_redirect_ HTTP 상태 코드로 리디렉션하기 위해 wp_safe_redirect() 함수와 함께 사용할 수있는 _301_ 후크가 있습니다. 보시다시피 나머지는 PHP 코드와 약간의 정규 표현식 마법에 영향을 미칩니다. 테마의 _functions.php_ 파일에서이 코드를 실제로 어디에나 넣을 수 있습니다.

_add_action('template_redirect','my_template_redirect');
function my_template_redirect() {
  $redirect_to = false;
  list($url_path,$params) = explode('?',$_SERVER['REQUEST_URI']);
  $path_parts = explode('/',trim($url_path,'/'));
  switch ($path_parts[0]) {
    case 'products-directory':
      $redirect_to = '/products-top-level-page';
      break;
    case 'about-directory':
      $redirect_to = '/about-top-level-page';
      break;
    case 'services-directory':
      $redirect_to = '/services-top-level-page';
      break;
    default:
      if (preg_match('#same-Word(.*)#',$path_parts[0],$match)) {
        $category = str_replace('.html','',$match[1]);
        $redirect_to = "/newcategory/{$category}";
      } else {
        // Do whatever else you need here
      }
  }
  if ($redirect_to) {
    wp_safe_redirect($redirect_to,301);
    exit();
  }
}
_

SEO뿐만 아니라 사용성을 고려 하시겠습니까?

당신이 정말로 # 2를하고 싶은지 물어 볼까요? 인식 된 SEO에만 최적화 된 사이트보다 사용자에게 사이트를 훨씬 덜 유용하게 만드는 IMO (및 this group SEO neophyte.) URL 경로의 첫 번째 세그먼트에서 "-directory"를 삭제하는 것이 좋습니다. 어쨌든 JMTCW.

404 페이지를 생성 하시겠습니까?

404를 발행 해야하는 경우 헤더로 할 수 있습니다.

_header("HTTP/1.0 404 Not Found");
exit;
_

그러나 나는 그것이 당신이하고 싶은 것이 아니라고 생각합니다. 위의 PHP 함수를 수정하고 _301_로 HTTP 요청에 응답하면 필요한 리디렉션 로직을 얻을 수 있다고 생각합니까?

미디어 라이브러리로 이미지 가져 오기 및 301 리디렉션

미디어 라이브러리로 옮기면 앞으로 관리 할 수 ​​있습니다. 다음은 도움이 될 수있는 플러그인입니다 (3.0과 함께 작동하는지 확실하지 않지만 어쨌든 사용하기에 적합한 코드 기반 일 수 있음).

하드 코딩 이미지 URL 301 배열을 사용하여 리디렉션

그런 다음 일회성 일 이기 때문에 단순히 이미지 URL을 배열로 하드 코딩 할 수 있습니다 을 사용하여 리디렉션 기능과 일치시킵니다. 위의 코드에서 switch 문의 기본값을 수정하면 다음과 같습니다.

_default:
  if (preg_match('#same-Word(.*)#',$path_parts[0],$match)) {
    $category = str_replace('.html','',$match[1]);
    $redirect_to = "/newcategory/{$category}";
  } else {
    $images = array(
      '/images/image1.jpg' => '/wp-content/uploads/2010/08/image1.jpg',
      '/images/image2.jpg' => '/wp-content/uploads/2010/08/image2.jpg',
      '/images/image3.jpg' => '/wp-content/uploads/2010/08/image3.jpg',
      );
    if (in_array($url_path,$images)) {
      $redirect_to = $images[$url_path];
    } else  {
      // Do whatever else you need here
    }
  }
_

preg_match() ~ 301을 사용하여 URL 패턴으로 이미지 리디렉션

물론 이미지 URL이 패턴을 따르는 경우 다음과 같이 preg_match()을 사용하여 이미지 배열의 대부분 또는 전부를 간소화 할 수 있습니다.

_if (preg_match('#^/images/(.*)$#',$url_path,$match)) {
  $redirect_to = "/wp-content/uploads/2010/08/{$match[1]}";
}
_

이것이 도움이 되었습니까?

8
MikeSchinkel

한 permalink struture에서 다른 permalink struture로 바꾸기위한 플러그인이 있습니다. 그러나 이것이 당신의 필요에 충분하지 않을 것이라고 저는 확신합니다. .htaccess 다시 쓰기 규칙을 사용해야합니다. 나는 당신에게 당신의 필요에 대한 몇 가지 예를 드리고자합니다 (그것이 모두 정확한지 확실하지 않습니다). 서버의 루트에서 ".htaccess"라는 파일에 모든 행을 포함시킵니다. 그것 워드 프레스 규칙 위에 :

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
# your rules start here. Keep the following lines that has been produced by wordpress
RewriteBase /
RewriteRule wp/(.*)$ /$1 [R=301]
RewriteRule /products-directory/(.*)$ /products-top-level-page [R=301]
RewriteRule /about-directory/(.*)$ /about-top-level-page [R=301]
RewriteRule /services-directory/$ /services-top-level-page [R=301]
RewriteRule /same-Word(.*)$ /newcategory/$1 [R=301]

플래그 [R = 301]은 클라이언트 브라우저 또는 검색 엔진에 영구 리디렉션임을 알립니다.

당신은 아마 당신의 wordpress 데이타베이스 내의 모든 permalinks를 업데이트하고 싶을 것입니다. 데이터베이스에 문자열 업데이트에 관한 기사를 작성했습니다. . 불행히도 아직 게시물을 번역하지 않았습니다. 그러나 쿼리는 명확해야합니다. 그렇지 않으면 MySQL 문서를 사용하십시오.

1
2ndkauboy

저는 이것을 사용합니다 : Simple 301 Redirects plugin - 이전에 몇 페이지를 사용했고, 곧 내 WP 파일 안에있는 모든 파일과 폴더가있는 웹 디자인 사이트로 이동했습니다.

0
Steve Shearer