Rio Mastri Web Designer and Developer Logo

Cara Redirect URL WordPress tanpa Plugin

Pada kesempatan kali ini kami akan memberikan materi mengenai bagaimana cara redirect URL halaman atau postingan artikel WordPress tanpa menggunakan plugin tambahan apa pun secara permanen. Metode ini juga sering disebut sebagai redirect 301.

Sebenarnya banyak cara untuk menerapkan metode mengalihkan tautan halaman. Namun di sini saya akan membahas 3 cara redirect URL yang paling mudah dilakukan oleh pengguna non-teknis sekalipun.

Key Takeaways

  • Jenis-jenis redirect (301/302/303/307/308) dan kapan Anda memakainya.
  • 3 cara menerapkan redirect di WordPress (tanpa plugin), lengkap dengan best practice keamanan, performa, dan SEO.
  • Cara testing dan troubleshooting agar redirect tidak loop atau chain.

Video Tutorial

Dalam penjelasan ini kami menggunakan metode mengalihkan halaman melalui file functions.php atau plugin code snippets (apabila cara pertama tidak berhasil) dan file .htaccess. Selain itu, metode ini kami khususkan untuk redirect relative URL, bukan absolute URL.

Panduan Memilih Metode Redirect

Gunakan panduan ini sebelum masuk langkah teknis:

  • Metode 1 (functions.php / kode hardcode)
    • Cocok untuk jumlah redirect sedikit dan Anda ingin cepat.
    • Risiko: kode dieksekusi di setiap request dan harus hati-hati menghindari loop.
  • Metode 2 (Custom Fields / daftar rules di satu halaman private)
    • Cocok untuk redirect menengah dan Anda ingin mengelola rules tanpa edit file berkali-kali.
    • Risiko: salah input meta bisa membuat rule tidak jalan dan perlu validasi.
  • Metode 3 (.htaccess / level server)
    • Cocok untuk redirect banyak atau Anda ingin performa maksimal di Apache.
    • Risiko: salah konfigurasi bisa membuat website error dan wajib backup.

Apa Itu Redirect?

Redirect adalah proses mengalihkan pengunjung dari satu URL ke URL lain. Di WordPress, redirect biasanya dibutuhkan saat Anda mengganti slug/permalink, menghapus halaman lama, migrasi konten, atau melakukan perubahan struktur URL agar tidak memunculkan error 404 dan kehilangan trafik SEO.

Metode pertama adalah dengan cara menambahkan tautan pengalihan langsung (hardcode) ke dalam file functions.php. Cara ini mudah dan cocok digunakan untuk mengalihkan tautan dalam jumlah kecil.

Selanjutnya, pada metode kedua adalah dengan menggunakan fitur custom fields yang disediakan secara default oleh WordPress pada block editor.

Proses mengalihkan halaman akan sangat terbantu dengan menggunakan cara kedua ini dan sangat ideal diterapkan apabila Anda memiliki banyak halaman yang harus dialihkan.

Jenis-jenis Redirect di WordPress

Memilih status code redirect yang benar penting untuk SEO, caching, dan perilaku browser.

301 (Moved Permanently)

  • Dipakai saat URL lama secara permanen pindah ke URL baru.
  • Paling umum untuk kebutuhan SEO (memindahkan “nilai” halaman lama ke halaman baru).
  • Contoh kasus: ganti permalink/slug artikel, migrasi struktur URL.

Rekomendasi: gunakan 301 untuk redirect permanen.

302 (Found / Temporary Redirect)

  • Dipakai saat pengalihan bersifat sementara.
  • Mesin pencari biasanya tidak memindahkan nilai SEO secara penuh karena dianggap sementara.

Contoh: halaman promo sementara dialihkan ke halaman event.

303 (See Other)

  • Umumnya dipakai setelah request POST, agar browser dialihkan ke halaman lain dengan metode GET.
  • Lebih relevan untuk alur form/pembayaran, bukan redirect konten biasa.

307 (Temporary Redirect)

  • Mirip 302 (sementara), tetapi menjaga HTTP method (mis. POST tetap POST).
  • Berguna untuk aplikasi yang sensitif terhadap method.

308 (Permanent Redirect)

  • Mirip 301 (permanen), tetapi menjaga HTTP method (POST tidak diubah).
  • Cocok untuk kebutuhan permanen yang butuh konsistensi method.

Catatan: Untuk kebutuhan “ganti URL artikel/halaman” di WordPress, 301 hampir selalu cukup. 308 dipakai bila Anda memang paham kebutuhan method-preservation (biasanya di konteks API atau aplikasi web tertentu).

Persiapan Sebelum Redirect

Sebelum menerapkan redirect, lakukan ini agar aman:

  • Backup file tema (jika mengubah functions.php) dan .htaccess (jika metode 3).
  • Pastikan Anda tahu URL lama dan URL tujuan yang paling relevan (hindari mengarahkannya semua ke homepage).
  • Hindari redirect chain: A ke B ke C. Usahakan langsung A ke C.
  • Pastikan Anda tidak sedang mengarahkan endpoint penting seperti:
    • /wp-admin/, /wp-login.php
    • /wp-json/ (REST API)
    • file statis (/wp-content/, /wp-includes/)

Keuntungan Melakukan Pengalihan Halaman WordPress

Terdapat beberapa situasi yang mengharuskan Anda menerapkan pengalihan halaman website. Beberapa di antaranya adalah sebagai berikut:

  1. Mengganti nama domain: Ketika Anda mengganti nama donain, semua tautan internal akan tetap mengarah ke domain dan postingan lama. Untuk mengatasi ini, cara terbaik adalah dengan melakukan pengalihan.
  2. Meningkatkan SEO: Jika Anda memiliki website bisnis online, hal yang paling utama untuk meningkatkan penjualan, konversi, dan pemasukan uang adalah SEO. Sedangkan SEO sendiri berkaitan dengana permalink. Jika permalink Anda tidak baik, maka Anda harus memperbaikinya. Cara terbaik memperbaiki permalink adalah melakukan pengalihan halaman. Dengan begitu, pengunjung website Anda tidak akan diarahkan ke halaman 404 alias halaman kosong…
  3. Menghapus halaman: Jika Anda menghapus halaman atau postingan yang telah mendapatkan ranking di mesin pencari, maka Anda telah mengambil keputusan yang buruk. Seharusnya, Anda mengatur pengalihan halaman terlebih dulu sehingga pengunjung website Anda tidak diarahkan ke halaman 404.
  4. Pembaruan halaman: Situasi ini terjadi ketika misalnya, Anda ingin menjalankan A/B testing, yang mana Anda akan mempersiapkan halaman pengujian. Terdapat 2 cara antisipasi, pertama, adalah dengan mengaktifkan mode pemeliharaan atau maintenance mode. Cara lainnya adalah dengan melakukan mengatur pengalihan. Dengan begitu, pengguna tidak akan mengunjungi halaman yang sedang dalam masa pemeliharaan.
  5. Penawaran terbatas: Situasi ini sering ditemukan apabila Anda menjalankan website bisnis online. Ketika Anda menggunakan WooCommerce atau SureCart untuk menjual produk digital maupun fisik, mungkin Anda akan menjalankan promo terbatas sebagai salah satu strategi pemasaran. Cara terbaik setelah masa promosi berakhir adalah dengan tidak menghapus halaman tersebut, melainkan melakukan pengalihan halaman ke halaman produk semula.

Mungkin suatu saat ada kalanya Anda akan menemukan kasus pengalihan halaman yang terlewat dari pantauan Anda. Untuk itu, Anda harus memeriksanya secara berkala.

Sekarang, mari kita mulai dari metode pertama, yaitu bagaimana cara membuat pengalihan halaman dengan cara menambahkan kode pada tema secara langsung.

Cara Redirect URL Menggunakan Hardcode (Metode 1)

Sesuai dengan penjelasan di atas, bahwa pada metode pertama ini kami akan melakukannya dengan menulis beberapa baris kode mengalihkan halaman langsung pada file functions.php atau plugin code snippets.

Metode ini membuat daftar mapping dari URL lama ke URL baru di dalam kode. Cocok untuk redirect sedikit dan Anda nyaman mengedit file.

Kapan metode ini cocok

  • Redirect hanya beberapa URL.
  • Anda ingin kontrol penuh dan cepat.
  • Anda memahami risiko loop/konflik.

1. Salin slug URL (dari) lama dan (ke) baru

Saya berasumsi Anda sudah mengetahui apa itu slug. Jika belum tahu, slug adalah bagian dari tautan pada halaman-halaman website Anda yang berada di sebelah kanan tanda garis miring “/” setelah nama domain Anda.

Sebagai contoh, saya menggunakan nama domain tryme.akw (diinstal pada server komputer lokal). Ketika mengakses salah satu artikel blog, maka akan menjadi tryme.akw/artikel-baru. Di sini yang dinamakan sebagai slug adalah bagian /artikel-baru/.

Posisi Slug pada URL

Dalam kasus ini saya akan membuat redirect 301 dari tryme.akw⁠/artikel-lama/ ke tryme.akw/artikel-baru/. Di sini, yang harus disalin adalah slug /artikel-lama/ dan akan digantikan dengan /artikel-baru/.

Maka, slug-nya akan terlihat seperti berikut:

Dari: /artikel-lama/
ke: /artikel-baru/

2. Menambahkan kode khusus ke file functions.php tema Anda

Saya akan menggunakan tipe data “array” dalam menerapkan aturan redirect URL. Pemilihan ini karena mempertimbangkan aspek skalabilitas.

Maksudnya adalah, ketika Anda ingin menambahkan redirect URL di masa yang akan datang, dengan menggunakan array maka risiko kesalahan akan lebih kecil. Sebab, penulisan kode lebih sederhana dan rapi.

Sebelum memulai, perlu saya ingatkan, untuk menambahkan atau memodifikasi kode tema atau plugin, sebaiknya hanya dilakukan menggunakan child theme, alih-alih mengubah kode pada tema asli (parent theme).

Bagaimana cara menambahkan kode pada tema WordPress? Mudah saja, masuk ke Admin Dashboard – Appearance – Theme File Editor. Pilih child theme yang aktif, lalu buka file functions.php.

Alternatif lain sebagai cara menambahkan kode atau skrip pada tema website adalah menggunakan plugin code snippets manager seperti, WP Codebox atau Code Snippets. Dengan begitu Anda dapat mengelola kode kustom/custom code dengan lebih mudah lagi.

Setelah Anda membuka file tersebut, kemudian salin dan tambahkan kode berikut:

PHP
add_action('template_redirect', function () {

    if (is_admin() || wp_doing_ajax() || (defined('REST_REQUEST') && REST_REQUEST) || wp_doing_cron()) {
        return;
    }

    $request_uri = isset($_SERVER['REQUEST_URI']) ? wp_unslash($_SERVER['REQUEST_URI']) : '';
    if ($request_uri === '') {
        return;
    }

    $path = parse_url($request_uri, PHP_URL_PATH);
    if (!is_string($path) || $path === '') {
        return;
    }

    // Normalisasi: sesuaikan dengan struktur permalink Anda
    $normalized = trailingslashit($path);

    $redirects_rules = [
        '/dari-slug-lama/' => '/ke-slug-baru/',
        '/produk-lama/'    => '/produk-baru/',
    ];

    if (!isset($redirects[$normalized])) {
        return;
    }

    $target = $redirects[$normalized];
    if (!is_string($target) || $target === '') {
        return;
    }

    // Ubah target relatif jadi absolut
    if (str_starts_with($target, '/')) {
        $target = home_url($target);
    } else {
        // Jika Anda izinkan URL absolut, tetap rapikan
        $target = esc_url_raw($target);
        if ($target === '') return;
    }

    // Teruskan query string jika ada
    if (!empty($_SERVER['QUERY_STRING'])) {
        $target .= (str_contains($target, '?') ? '&' : '?') . $_SERVER['QUERY_STRING'];
    }

    // Hindari loop
    $current_url = home_url($normalized);
    if ($current_url === strtok($target, '?')) {
        return;
    }

    wp_safe_redirect($target, 301);
    exit;
});

Ganti ⁠”dari slug”⁠ dan ⁠”ke slug”⁠ sesuai slug halaman yang ingin Anda alihkan. Pada slug terakhir, jangan gunakan tanda koma (,). Misalnya, jika Anda memiliki empat halaman yang ingin dialihkan, maka penulisannya seperti berikut:

PHP
// Daftar redirect (FROM => TO)
// Gunakan path relatif, selalu diawali "/" dan akhiri "/"
$redirect_rules = [
    '/dari-slug-1/' => '/ke-slug-1/',
    '/dari-slug-2/' => '/ke-slug-2/',
    '/dari-slug-3/' => '/ke-slug-3/',
    '/dari-slug-4/' => '/ke-slug-4/',
];

Anda bisa menambahkan beberapa baris kode berikutnya untuk menambah halaman pengalihan yang Anda butuhkan. Sampai di sini, Anda telah berhasil membuat halaman pengalihan.

Catatan penting

  • Gunakan wp_safe_redirect() agar aman dari open redirect.
  • Pastikan mapping menggunakan format yang konsisten: selalu '/slug-lama/' (tanpa spasi, dan biasanya lowercase).
  • Bila website Anda tidak menggunakan trailing slash, Anda bisa menyesuaikan normalisasi:
    • Ganti trailingslashit() dengan untrailingslashit() pada $normalized dan mapping.

Cara Redirect URL Menggunakan Custom Fields (Metode 2)

Cara mengalihkan halaman ini dapat dikatakan adalah yang paling mudah tanpa harus memodifikasi kode pada file functions.php tema Anda berulang kali setiap ada penambahan aturan redirect 301.

Karenanya, metode ini cocok jika Anda ingin mengelola redirect tanpa terus mengedit file. Intinya: Anda membuat “satu tempat” (halaman private) yang menyimpan daftar rules redirect.

1. Menghapus dan menambahkan kode

Jika Anda telah menambahkan kode metode 1, maka Anda harus menghapus dan menggantinya dengan kode berikut:

PHP
/**
 * Redirect rules dari Custom Field "redirect_rules" pada halaman private tertentu.
 * Format tiap baris: /from/ => /to/
 */
add_action('template_redirect', function () {

    if (is_admin() || wp_doing_ajax() || (defined('REST_REQUEST') && REST_REQUEST) || wp_doing_cron()) {
        return;
    }

    $rules_page_id = 123; // Ganti dengan ID halaman private Anda.
    if (!$rules_page_id) {
        return;
    }

    $request_uri = isset($_SERVER['REQUEST_URI']) ? wp_unslash($_SERVER['REQUEST_URI']) : '';
    if ($request_uri === '') {
        return;
    }

    $path = parse_url($request_uri, PHP_URL_PATH);
    if (!is_string($path) || $path === '') {
        return;
    }

    $normalized = trailingslashit($path);

    $raw_rules = get_post_meta($rules_page_id, 'redirect_rules', true);
    if (!is_string($raw_rules) || trim($raw_rules) === '') {
        return;
    }

    $lines = preg_split('/rn|r|n/', $raw_rules);
    if (!$lines) {
        return;
    }

    $map = [];
    foreach ($lines as $line) {
        $line = trim($line);
        if ($line === '' || str_starts_with($line, '#')) {
            continue; // izinkan komentar pakai '#'
        }

        // Split by =>
        $parts = preg_split('/s*=>s*/', $line);
        if (!$parts || count($parts) !== 2) {
            continue;
        }

        $from = trim($parts[0]);
        $to   = trim($parts[1]);

        if ($from === '' || $to === '') {
            continue;
        }

        // Normalisasi from agar konsisten
        if (!str_starts_with($from, '/')) {
            $from = '/' . $from;
        }
        $from = trailingslashit($from);

        $map[$from] = $to;
    }

    if (!isset($map[$normalized])) {
        return;
    }

    $target = $map[$normalized];

    // Jika target relatif, buat absolut
    if (str_starts_with($target, '/')) {
        $target = home_url($target);
    } else {
        // Jika absolut, validasi URL secara minimal
        $target = esc_url_raw($target);
        if ($target === '') {
            return;
        }
    }

    $current_url = home_url($normalized);
    if ($current_url === $target) {
        return;
    }

    wp_safe_redirect($target, 301);
    exit;
});

Jika kode di atas sudah Anda tambahkan, langkah selanjutnya adalah membuat satu halaman khusus yang berfungsi sebagai “panel” untuk menyimpan aturan redirect URL.

Pada pendekatan ini, kami tidak mengambil halaman berdasarkan slug atau judul (misalnya get_page_by_path('redirect')), melainkan menggunakan ID halaman yang sudah ditentukan secara eksplisit melalui variabel:

PHP
$rules_page_id = 123; // Ganti dengan ID halaman private Anda.

Alasan utamanya sederhana: ketika ID halaman sudah pasti, proses pencarian halaman menjadi lebih langsung, lebih hemat eksekusi, dan menghindari konflik apabila ada halaman lain yang kebetulan memiliki slug/judul mirip.

Meskipun Anda tetap bisa memakai metode lain seperti get_page_by_path() atau WP_Query($args), penggunaan keduanya pada konteks ini umumnya kurang diperlukan karena yang kami butuhkan hanya satu halaman sumber aturan redirect. Dengan kata lain, penetapan ID halaman adalah pendekatan yang paling “to the point” untuk kasus seperti ini.

Selanjutnya, halaman tersebut sebaiknya dibuat dengan status Private. Walaupun pada kode ini kami sudah “mengunci” halaman sumber dengan ID tertentu, penetapan status private tetap penting karena:

  • Keamanan: Status private memastikan konten aturan redirect tidak terekspos publik dan hanya dapat diakses pengguna yang memiliki izin tertentu di WordPress.
  • Kontrol yang lebih baik: Hanya user yang berwenang (misalnya Editor/Administrator) yang dapat mengubah isi custom field redirect_rules, sehingga meminimalkan risiko perubahan aturan redirect oleh pihak yang tidak seharusnya.
  • Konsistensi dalam akses data: Karena aturan redirect ditulis sebagai teks di custom field, status private membantu memastikan hanya pihak yang benar-benar mengelola situs yang dapat memodifikasinya.
  • Meminimalkan kesalahan operasional: Dengan menjadikan halaman “rules” sebagai private, kecil kemungkinan Anda (atau tim) salah mengelola halaman ini seperti halaman konten biasa (misalnya dipublikasikan atau diindeks).

Setelah halaman private ini dibuat, Anda tinggal menambahkan custom field bernama redirect_rules, lalu mengisi aturannya per baris dengan format:

PHP
/from/ => /to/

Kode akan membaca setiap baris tersebut, membentuk mapping redirect, lalu menjalankan redirect 301 ketika URL yang diakses cocok dengan aturan yang tersedia.

2. Membuat halaman redirect private

Langkah berikutnya untuk membuat redirect 301 adalah membuat sebuah halaman / page dengan status private. Alasan mengapa status halaman harus private adalah untuk alasan keamanan WordPress Anda, pastinya.

Membuat Halaman Redirect URL

Selain itu, halaman ini harus diberi judul “redirect”. Hal ini penting, sebab pada halaman inilah semua redirect URL akan dibuat. Anda bisa menggunakan judul lain. Namun, untuk mengurangi kemungkinan terjadinya kebingungan ke depannya, sebaiknya gunakan judul yang relevan.

Sebelum memublikasikannya, pastikan untuk mengganti visibilitas menjadi “Private” dengan memilih pada bagian kanan klik Status – Status & Visibility ubah menjadi “Private”.

Cara Mengubah Status Halaman menjadi Private

Selanjutnya adalah mengaktifkan pilihan Custom Fields dengan cara klik titik tiga di sebelah kanan atas – Preferences – General – Advanced – Custom Fields. Setelah mengaktifkan opsi ini, klik Show & Reload Page, maka tab browser akan secara otomatis dimuat ulang.

Mengaktifkan Custom Fields pada Menu Preferences

3. Menambahkan dan menyimpan tautan / URL pada Custom Fields

Ini merupakan langkah terakhir yang harus Anda lakukan. Tambahkan custom fields lalu simpan atau save ulang halaman redirect.

Anda akan melihat 2 kolom pada opsi Custom Fields, yaitu “Name” dan “Value”. Bagaiaman cara menambahkan URL untuk mengalihkan halaman?

Mudah saja. Pada kolom “Name” input dengan URL lama, sedangkan URL baru diketik pada kolom “Value”. Lihat gambar di bawah yang mana saya masih menggunakan tautan seperti metode pertama.

Selanjutnya, coba periksa halaman yang Anda alihkan, apakah sudah aktif atau belum. Anda dapat menambahkan aturan redirect URL pada bagian custom fields tanpa batasan.

Nah, inilah 2 cara mudah membuat redirect 301 tanpa menggunakan plugin tambahan.

Apakah Anda telah menerapkan redirect URL pada halaman website? Metode pertama atau metode kedua yang Anda terapkan? Jika Anda mengalami kesulitan atau kendala, silakan beri komentar atau langsung hubungi saya.

3. Redirect URL Menggunakan .htaccess

Cara ketiga agar pengguna tidak tersesat ke halaman 404 adalah melakukan redirect melalui file .htaccess (level server). Sebelum memulai, wajib melakukan backup file .htaccess terlebih dulu.

Setelah Anda mengunduh file .htaccess, buat salinan file tersebut dari direktori root website Anda untuk memastikan file asli tetap aman jika terjadi kesalahan konfigurasi.

Baca juga: Tips Lengkap Meningkatkan Keamanan Website

Jika Anda menggunakan server Apache, Anda dapat menerapkan redirect langsung melalui .htaccess. Penulisan sintaks redirect yang paling sederhana adalah seperti berikut:

Apache
# Redirect [status] URL-path URL-baru
Redirect 301 /artikel-lama/ https://testing.akw/artikel-baru/

Catatan:

  • Tambahkan trailing slash (/) secara konsisten bila struktur permalink Anda menggunakannya.
  • Gunakan URL tujuan yang relevan (hindari mengarahkan semuanya ke homepage kecuali memang diperlukan).

Di mana lokasi file .htaccess?

Jika Anda belum pernah membuka atau mengedit file ini, file .htaccess umumnya berada di direktori root instalasi WordPress (folder yang sama dengan wp-config.php).

[bricks_template id=”4362″]

Pada beberapa panel seperti ServerAvatar, file .htaccess biasanya disembunyikan secara default. Karena itu, Anda perlu mengaktifkan opsi untuk menampilkan file tersembunyi (toggle/Show hidden files). Sementara itu, pada cPanel, file .htaccess biasanya lebih mudah ditemukan melalui File Manager.

Cara Redirect Halaman Menggunakan .htaccess

Bonus: Redirect seluruh website ke domain baru (via .htaccess)

Berikut contoh snippet untuk mengalihkan semua halaman dari domain lama ke domain baru:

Apache
RewriteEngine On

# Mengalihkan domain lama (non-www dan www) ke domain baru
RewriteCond %{HTTP_HOST} ^(www.)?domainlama.com$ [NC]
RewriteRule ^(.*)$ https://domainbaru.com/$1 [R=301,L]

Keterangan:

  • domainlama.com adalah website lama yang masih aktif saat ini.
  • domainbaru.com adalah website baru yang menjadi tujuan pengalihan.

Dengan aturan tersebut, halaman:

  • domainlama.com/tentang-saya
    akan dialihkan menjadi:
  • domainbaru.com/tentang-saya

Jika Anda juga ingin memastikan versi HTTPS atau memaksa www/non-www pada domain baru, aturan dapat disesuaikan agar tidak bentrok dengan konfigurasi lain (misalnya rule dari SSL, caching, atau WordPress permalink).

Membuat Redirect URL untuk Website Anda Secara Mandiri

Apakah penjelasan di atas sudah cukup membantu Anda?

Pada metode pertama dan kedua, redirect URL hanya diterapkan untuk mengalihkan halaman di website yang sama. Sementara itu, pada metode terakhir (melalui .htaccess), Anda bisa mengalihkan seluruh halaman website ke domain baru dengan tetap menjaga nilai SEO, selama redirect dilakukan dengan benar (terutama menggunakan status 301 dan menghindari redirect chain).

Sebagai pengingat, sebelum melakukan perubahan apa pun pada file dan database website, pastikan Anda melakukan backup data terlebih dulu agar prosesnya aman dan mudah dipulihkan jika terjadi kesalahan.

Jika Anda ingin proses backup yang lebih praktis, Anda bisa menggunakan plugin seperti WPVivid untuk mengelola backup dan restore secara fleksibel dan lebih terstruktur.

3 thoughts on “Cara Redirect URL WordPress tanpa Plugin”

Leave a Comment