Chuyển hướng toàn bộ trang web đến một trang


10

Tôi cần chuyển hướng toàn bộ trang web WordPress sang một trang WordPress duy nhất. Một loại chế độ bảo trì, nhưng chuyển hướng phải đến một trang WordPress được xuất bản. Thật không may, trang bảo trì tôi cần hiển thị phải sử dụng các plugin WordPress khác.

Tôi không biết về bất kỳ plugin Chế độ bảo trì nào cho phép bạn làm điều này. Nhiều nhất, họ cho phép bạn viết mã HTML / CSS tùy chỉnh.

Tôi đã suy nghĩ về một quy tắc mod_rewrite .htaccess. Tuy nhiên, tôi rất yếu với mod_rewrite.

Đầu tiên, tôi vô hiệu hóa chuyển hướng kinh điển .

Sau đó, tôi đã thử sử dụng:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]

Tuy nhiên, các quy tắc này tạo ra các vòng chuyển hướng. page_id=813là ID của trang bảo trì của tôi, tất nhiên.

Có ai biết về một plugin chế độ bảo trì, chuyển hướng đến một trang đã xuất bản không?

Ngoài ra, ai đó có thể giúp tôi sửa các quy tắc mod_rewrite không? Chúc mừng thêm nếu chúng ta có thể rời /wp-adminkhỏi các quy tắc chuyển hướng.

Câu trả lời:


14

Bạn thực sự có thể làm điều này từ bên trong WordPress, thay vì cần phải đưa ra một bản sửa lỗi .htaccess khó hiểu và áp đảo.

Chúng tôi có thể nối vào template_redirectbộ lọc, chỉ kích hoạt ở mặt trước (không phải trong wp-admin). Sau đó, chúng tôi sử dụng is_page()chức năng để kiểm tra xem chúng tôi đang xem một trang có ID 813. Nếu không, hãy chuyển hướng đến trang đó bằng wp_redirect()chức năng.

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
    exit;
} );

Điều này sẽ hoạt động tốt cho chế độ bảo trì, vì chuyển hướng được thực hiện với tiêu đề HTTP 302 'tạm thời', cho phép các bot và công cụ tìm kiếm biết rằng trang web của bạn sẽ sớm hoạt động. Tuy nhiên, nếu bạn di chuyển vĩnh viễn trang web, bạn có thể muốn sử dụng tiêu đề HTTP 301 'vĩnh viễn' cho chuyển hướng. Bạn có thể làm điều này bằng cách thêm một tham số thứ hai cho wp_redirecthàm. Thí dụ:

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
    exit;
} );

Điều này làm việc tuyệt vời cho mục đích của tôi là tốt. Ngoại trừ việc thêm thắt - trang web "xuống" là tốt và tôi muốn duy trì WP và chạy phục vụ trang tạm biệt như trang chủ. Có cách nào để thêm tiêu đề 301 cho loại chuyển hướng này cho SEO không?
Tapefreak

@Tapefreak Bạn có thể đặt tiêu đề HTTP làm tham số thứ hai của wp_redirecthàm. Ví dụ:wp_redirect( home_url( 'index.php?page_id=183' ), 301 );
shea

1

Tôi đã nhúng câu trả lời được chấp nhận bởi @shea trong một plugin một tệp và thêm hai tùy chọn: chỉ chuyển hướng người dùng không phải quản trị viên & chuyển hướng đến một URL tùy ý.

Nếu quan tâm, xin vui lòng tải xuống plugin từ Github => https://github.com/Idearia/wp-redirect-website-to-url .

Tùy chọn

Các tùy chọn plugin rất đơn giản; hiện tại, chúng được mã hóa cứng trong tệp plugin, nhưng tôi có thể xem xét việc xây dựng một trang tùy chọn nếu mọi người yêu cầu:

  • DESTINATION_URL : URL đầy đủ để chuyển hướng người dùng; có thể là một trang bên ngoài tên miền trang web.
  • DESTINATION_URL_ID : Nếu URL chuyển hướng là trang hoặc bài đăng WordPress, hãy chỉ định ở đây ID WordPress của nó.
  • USER_CAPABILITY : Người dùng có khả năng này sẽ không được chuyển hướng; để trống để chuyển hướng mọi người; mặc định là 'Manage_options' được bật cho người dùng quản trị viên.
  • REDIRECT_STATUS_CODE : Trạng thái chuyển hướng: 302 cho chuyển hướng tạm thời, 301 cho chuyển hướng vĩnh viễn.
  • DEBUG : Có in thông tin gỡ lỗi trong debug.log không.

Thông tin cập nhật trên trang Github => https://github.com/Idearia/wp-redirect-website-to-url .

Xin lưu ý rằng plugin rất cơ bản; người dùng nâng cao hơn có thể xem xét thay vì một trong nhiều plugin bảo trì có sẵn trên kho lưu trữ plugin WordPress.org.

Hãy cho tôi biết nếu bạn có bất kỳ vấn đề nào khi chạy plugin


0

Tôi sẽ đi cho một giải pháp đơn giản hơn nhiều. Giả định của tôi là bạn chỉ muốn bất kỳ ai chỉ nhìn thấy một trang - không cần hiển thị bất kỳ trang WP nào - cho bất kỳ yêu cầu nào cho tên miền của bạn.

Vì vậy, tại sao không tạo một trang HTML, tạo kiểu cho nó bằng một số CSS và đặt trang đó vào một thư mục khác trên nền tảng lưu trữ của bạn. Hãy chắc chắn rằng trang trông giống như bạn muốn.

Sau đó, chỉ cần trỏ tên miền của bạn vào thư mục mới. Với hầu hết các nền tảng lưu trữ, bạn có thể chỉ định thư mục cơ sở của tên miền. Vì vậy, trỏ tên miền của bạn vào thư mục cơ sở mới. Không cần chuyển hướng htaccess phức tạp, hoặc plugin WP hoặc bộ lọc đặc biệt để nối vào WP.

Hoặc, bạn có thể di chuyển tất cả nội dung ra khỏi (các) thư mục gốc tên miền hiện tại và đặt tệp HTML đơn giản của bạn vào vị trí của nó.

Các địa điểm lưu trữ cũng có thể có một 'chuyển hướng toàn cầu' cho bất kỳ yêu cầu nào đến bất kỳ trang nào trên miền của bạn.

Dù bằng cách nào cũng sẽ là một giải pháp đơn giản cho nhu cầu của bạn chỉ có một trang cho toàn bộ tên miền của bạn.

Nếu bạn thực sự muốn một giải pháp htaccess, hãy sử dụng giải pháp này:

RewriteEngine on

RewriteRule ^(.*)$ http://www.example.com/  [R=permanent,L]

.. thay thế với tên miền thực tế của bạn. Làm cho SEO cũng hạnh phúc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.