it-swarm-vi.tech

Tạo 301 chuyển hướng cho URL bài đăng, trang, danh mục và hình ảnh?

Tôi sợ điều này có thể là quá nhiều để hỏi ở đây, vì vậy nếu vậy, xin vui lòng cho tôi biết một nơi khác để tìm hiểu.

Trợ giúp với Chuyển hướng

Tôi đang dọn dẹp một trang web phát triển kém và di chuyển wordpress từ thư mục con. Tôi đã dành hàng giờ cố gắng để xoay quanh hậu cần của chuyển hướng và regex. Tôi nghĩ rằng tôi đang xử lý nó, nhưng sẽ thực sự đánh giá cao sự xác nhận rằng tôi đang làm điều này đúng, và bất kỳ lời khuyên nào về các thực tiễn tốt nhất. Nếu bất cứ ai biết về bất kỳ hướng dẫn tốt với các ví dụ hướng dẫn, tôi cũng đánh giá cao điều đó.

Nếu bất cứ ai biết về thực sự các plugin đơn giản cho việc này, tôi sẽ vô cùng biết ơn. Tôi đã xem xét các plugin Redirections, nhưng thấy nó rất khó hiểu (đau đầu!). Trong mọi trường hợp, các ý tưởng của tôi bên dưới (các nguồn được theo sau => sau đó nhắm mục tiêu) là những gì tôi đã thu thập được từ các hướng dẫn và ảnh chụp màn hình và các hướng dẫn khác mà tôi đã tìm kiếm. Tôi khá chắc chắn rằng chúng sẽ được áp dụng bất kể tôi đặt chúng trực tiếp vào tệp .htaccess hay sử dụng Redirections hoặc plugin khác?

Vì vậy, đây là những gì tôi đang cố gắng thực hiện và tôi nghĩ nó cần phải được thực hiện như thế nào:

  1. Để di chuyển Wordpress từ thư mục con sang thư mục gốc:

    [.__.]/wp /(.*) => /$1[.__.]
  2. Đối với tất cả các trang hiện trong thư mục con trong thư mục gốc, tôi muốn xóa và/hoặc kết hợp một loạt các trang thành một trang cấp cao nhất:

    [.__.]/sản phẩm-thư mục /(.*) =>/sản phẩm-top-level-page [.__.] [.__.]/about-thư mục /(.*) =>/about-top- trang cấp [.__.] [.__.]/services-thư mục /(.*) =>/services-top-level-page [.__.]
  3. Đối với một loạt các trang cấp cao nhất phù hợp với một mẫu cụ thể, tôi muốn hướng chúng vào các danh mục cụ thể, ví dụ: tất cả các tên tệp đều bắt đầu bằng hai từ giống nhau như sau: same-Word-biến-biến.html và tôi muốn chúng giữ tên tệp hiện có của chúng - nếu tôi đặt permalinks của mình kết thúc bằng `.html`, điều này sẽ hoạt động , Tôi tin:

    [.__.]/same-Word (. *) => /newc Category /$1 [.___.]

    Làm cách nào để tạo quy tắc nếu tôi không có permalinks kết thúc bằng `.html`? (Tôi nghĩ rằng tôi đã thấy! Là ký tự "không", nhưng không chắc chắn cách sử dụng ở đây - phải không):

    [.__.]/same-Word (. *) => /newc Category /$1!\.html [.___.]
  4. Và sau đó, khi tôi đã xác định và chuyển hướng các trang cụ thể như trên, tôi sẽ xóa tất cả phần còn lại (rác) và muốn gửi người dùng đến trang chủ (hoặc có thể là một bài đăng ngẫu nhiên?).

    Vì vậy, 2 câu hỏi ở đây:

    1. Làm cách nào để tôi tạo quy tắc có nội dung "cho mọi thứ trừ các tệp đã được chuyển hướng như trên, hãy làm điều này"

    2. Làm cách nào tôi có thể ngăn quy tắc đó áp dụng cho các trang và bài đăng mới mà tôi tạo từ bây giờ?

    Một ý tưởng là bằng cách xóa, tôi sẽ không tìm thấy trang 404, vậy tôi có nên tạo quy tắc cho chính trang 404 không? Đó là những gì tôi muốn làm?

    Như tôi đã nói, trang web đã bị phát triển kém (với ứng dụng khách hướng dẫn mọi người chỉ "tung lên một trang" mà không quan tâm đến kiến ​​trúc phù hợp, SEO, v.v.) - nó hầu như không có liên kết xếp hạng hoặc liên kết ngoài/ngược để lo lắng, nhưng tôi muốn hiểu cách tiếp cận tốt nhất từ ​​quan điểm phát triển SEO và đúng đắn.

  5. Ngoài ra, tôi có nên di chuyển hình ảnh hiện có, vv vào thư mục nội dung wp hoặc để chúng trong thư mục con/ies hiện có của chúng không? Quan điểm của tôi là thực sự tìm kiếm một 'quét sạch' - loại bỏ mọi thứ có vẻ không gọn gàng, nhưng tôi không chắc liệu đây có phải là công việc nhiều hơn giá trị của nó hay không

Cảm ơn trước cho bất kỳ và tất cả các hướng dẫn.

5
CJN

Xin chào @CJN: ,

Câu hỏi đầu tiên của bạn, di chuyển thư mục WordPress được xử lý khác với phần còn lại.

Chuyển WordPress từ thư mục con sang Root:

Đi vào /wp-config.php và thêm phần sau để xác định (tất nhiên là sử dụng tên miền của khách hàng thay vì example.com):

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

301 Chuyển hướng bằng cách sử dụng template_loaderwp_safe_redirect()

Bạn có thể giải quyết hầu hết các câu hỏi còn lại bằng cách sửa đổi .htaccess thành @ Kau-Boy cho thấy cách, hoặc bạn chỉ có thể thực hiện trong PHP . WordPress có một hook template_redirect mà bạn có thể sử dụng cho việc này cùng với chức năng wp_safe_redirect() để chuyển hướng với mã trạng thái HTTP 301. Như bạn có thể thấy phần còn lại chỉ là vũ phu cho mã PHP và một chút ma thuật biểu thức thông thường được rắc vào. Bạn có thể đặt mã này thực tế ở bất cứ đâu trong tệp functions.php của chủ đề của bạn:

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();
  }
}

Xem xét khả năng sử dụng và không chỉ SEO?

Tôi sẽ hỏi nếu bạn thực sự muốn làm # 2? IMO làm cho một trang web ít sử dụng hơn cho người dùng so với một trang web được tối ưu hóa chỉ dành cho SEO nhận thức (và là người sáng lập và đồng tổ chức một lần của nhóm này Tôi không phải là người mới về SEO.) thay vì thấy bạn chỉ cần thả "-directory" từ đoạn đầu tiên của đường dẫn URL. JMTCW nào.

Tạo trang 404?

Nếu bạn cần phát hành 404, bạn có thể làm điều đó với tiêu đề:

header("HTTP/1.0 404 Not Found");
exit;

Tuy nhiên tôi nghĩ đó không phải là điều bạn muốn làm, đúng không? Tôi nghĩ bạn có thể đạt được bất kỳ logic chuyển hướng nào bạn cần bằng cách sửa đổi hàm PHP ở trên và đáp ứng yêu cầu HTTP bằng 301, phải không?

Nhập hình ảnh vào Thư viện phương tiện và Chuyển hướng 301

Bạn có thể di chuyển chúng vào thư viện phương tiện và làm như vậy sẽ cho phép bạn quản lý chúng tiến về phía trước. Đây là một plugin có thể giúp ích (mặc dù tôi không chắc nó có hoạt động với 3.0 hay không, nếu không nó có thể là một cơ sở mã tốt để làm việc với dù sao):

URL hình ảnh mã hóa cứng 301 Chuyển hướng bằng cách sử dụng một mảng

Sau đó, vì nó sẽ là một lần duy nhất bạn có thể chỉ cần mã hóa các URL hình ảnh của bạn thành một mảng và sử dụng chúng để khớp với chức năng chuyển hướng của bạn. Sửa đổi mặc định trong câu lệnh chuyển đổi từ mã ở trên nó có thể trông như thế này:

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
    }
  }

Sử dụng preg_match() đến 301 Chuyển hướng hình ảnh theo mẫu URL

Tất nhiên, nếu URL hình ảnh của bạn tuân theo một mẫu, bạn có thể hợp lý hóa nhiều hoặc tất cả các mảng hình ảnh bằng cách sử dụng preg_match() thay vào đó, như vậy:

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

Hi vọng điêu nay co ich?

8
MikeSchinkel

Có một plugin để thay đổi từ cấu trúc permalink này sang cấu trúc khác, nhưng tôi khá chắc chắn rằng điều này sẽ không đủ cho nhu cầu của bạn. Bạn sẽ phải sử dụng một số quy tắc viết lại .htaccess. Tôi cố gắng cung cấp cho bạn một số ví dụ cho nhu cầu của bạn (không chắc tất cả chúng có đúng không). Bao gồm tất cả các dòng đó vào một tệp có tên ".htaccess" trong thư mục gốc của máy chủ của bạn. Ra nó ở trên của các quy tắc wordpress:

# 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]

Cờ [R = 301] sẽ cho trình duyệt máy khách hoặc công cụ tìm kiếm biết rằng đó là một chuyển hướng vĩnh viễn.

Bạn có thể sẽ muốn cập nhật tất cả các permalinks trong cơ sở dữ liệu wordpress của bạn. Tôi đã viết một bài viết về cập nhật chuỗi trong cơ sở dữ liệu . Thật không may, tôi đã không dịch bài viết. Nhưng các truy vấn phải rõ ràng, nếu không thì chỉ sử dụng tài liệu MySQL.

1
2ndkauboy

Tôi sử dụng cái này: Simple 301 Redirects plugin - đã sử dụng nó cho một vài trang trước đó và tôi sẽ sớm chuyển trang web thiết kế web của mình với tất cả các tệp và thư mục bên trong các tệp WP của tôi.

0
Steve Shearer