Panduan Teknis : Pengalihan URL Untuk SEO , Tinjauan menyeluruh tentang pengalihan dan aplikasi yang tepat untuk pengalihan HTTP dan Seri Kode Status 3XX.
Pengalihan untuk SEO harus digunakan dengan benar karena memengaruhi cara situs web dirayapi dan diindeks oleh Google.
Sementara kebanyakan orang menganggap pengalihan sebagai tanda jalan memutar internet, lebih banyak lagi yang terjadi, dan ternyata sangat menyenangkan untuk ditemukan.
Baca terus untuk ikhtisar lengkap tentang pengalihan dan aplikasi yang tepat untuk SEO teknis .
Apa itu Pengalihan?
Pengalihan situs web memberi tahu browser dan mesin pencari informasi tentang URL dan di mana menemukan halaman web.
Pengalihan URL melibatkan kode yang diterapkan ke URL tertentu, atau sekelompok URL sehingga pengguna (atau mesin telusur) dikirim ke halaman berbeda ke URL aktual yang dimasukkan atau diklik.
Redirect dapat diatur sebagai:
- Pengalihan sementara: 302, 303, 307, 308.
- Pengalihan permanen: 301.
Kapan Menggunakan Pengalihan
Alasan utama untuk menggunakan pengalihan adalah:
- Satu halaman atau seluruh domain telah dipindahkan (URL diubah).
- Untuk mengizinkan penggunaan pemendek URL atau ‘pretty URLs’.
- Migrasi situs (misalnya, HTTP ke HTTPS).
Untuk tujuan SEO, pengalihan URL penting karena:
- Teruskan otoritas tautan apa pun yang menunjuk ke halaman yang telah dipindahkan atau dihapus.
- Hindari kesalahan 404 halaman tidak ditemukan (walaupun terkadang lebih baik meninggalkan 404).
Pengalihan dapat diterapkan secara grup atau seluruh domain, tetapi seringkali perlu ditetapkan secara individual untuk menghindari masalah.
Saat menggunakan RegEX untuk pengalihan grup, ini dapat memberikan hasil yang tidak terduga jika logika Anda tidak sempurna!
Jenis Pengalihan
Ada tiga jenis pengalihan utama:
- Pengalihan Meta Refresh ditetapkan pada tingkat halaman tetapi umumnya tidak disarankan untuk tujuan SEO. Ada dua jenis pengalihan meta: tertunda yang dianggap sebagai pengalihan sementara, dan instan, yang dianggap sebagai pengalihan permanen.
- Pengalihan Javascript juga disetel di halaman sisi klien dan dapat menyebabkan masalah SEO. Google telah menyatakan preferensi untuk pengalihan sisi server HTTP.
- Pengalihan HTTP diatur di sisi server dan pendekatan terbaik untuk tujuan SEO – kami membahasnya secara mendalam di bawah ini.
Apa itu Kode Status Respons HTTP?
Peramban dan perayap mesin telusur seperti GoogleBot disebut agen pengguna .
Ketika agen pengguna mencoba mengakses halaman web, yang terjadi adalah agen pengguna mengajukan permintaan, dan server situs web memberikan tanggapan.
Tanggapan ini disebut kode status tanggapan HTTP . Ini memberikan status untuk permintaan URL.
Dalam situasi di mana agen pengguna seperti GoogleBot meminta URL, server memberikan respons.
Misalnya, jika permintaan URL berhasil, server akan memberikan kode respons 200 yang berarti permintaan URL berhasil.
Jadi, ketika Anda membayangkan GoogleBot menjangkau situs web dan mencoba merayapinya, yang terjadi adalah serangkaian permintaan dan tanggapan.
Pengalihan HTTP
Pengalihan HTTP adalah respons server untuk meminta URL.
Jika URL ada di URL yang berbeda (karena dipindahkan), server memberi tahu agen pengguna bahwa permintaan URL dialihkan ke URL yang berbeda.
Kode respons untuk URL yang diubah biasanya berupa kode status respons 301 atau 302.
Seluruh rangkaian kode respons 3xx mengomunikasikan banyak informasi yang secara opsional dapat ditindaklanjuti oleh agen pengguna.
Contoh tindakan yang dapat dilakukan agen pengguna adalah menyimpan cache URL baru sehingga saat berikutnya URL lama diminta, ia akan meminta URL baru.
Jadi, pengalihan 301 dan 302 lebih dari sekadar rambu jalan internet yang mengatakan, “Pergi ke sini, bukan ke sana.”
baca juga
3XX Seri Kode Status
Pengalihan lebih dari sekadar dua kode status yang diketahui semua orang, kode respons 301 dan 302.
Ada total tujuh kode status respons resmi 3xx.
Ini adalah berbagai jenis pengalihan yang tersedia untuk digunakan:
- 300 Pilihan Ganda.
- 301 Pindah Secara Permanen.
- 302 Ditemukan.
- 303 Lihat Lainnya.
- 304 Tidak Dimodifikasi.
- 305 Gunakan Proksi.
- 306 (Tidak digunakan).
- 307 Pengalihan Sementara.
- 308 Pengalihan Permanen.
Beberapa kode status di atas belum ada selama ini dan mungkin tidak digunakan. Jadi, sebelum menggunakan kode pengalihan apa pun selain 301 atau 302, pastikan agen pengguna yang dimaksud dapat menafsirkannya.
Karena GoogleBot menggunakan Chrome versi terbaru (disebut browser tanpa kepala), mudah untuk memeriksa apakah kode status kompatibel dengan memeriksa apakah Chrome mengenali kode status dengan daftar kompatibilitas browser .
Untuk SEO, seseorang harus tetap menggunakan kode respons 301 dan 302 kecuali ada alasan khusus untuk menggunakan salah satu kode lainnya.
301: Dipindahkan Secara Permanen
Kode status 301 secara rutin dirujuk sebagai pengalihan 301. Tapi nama resminya adalah 301 Dipindahkan Secara Permanen .
Pengalihan 301 menunjukkan kepada agen pengguna bahwa URL (terkadang disebut sebagai sumber daya target atau hanya sumber daya) telah diubah ke lokasi lain dan harus menggunakan URL baru untuk permintaan di masa mendatang.
Seperti disebutkan sebelumnya, ada lebih banyak informasi juga.
Kode status 301 juga menyarankan agen pengguna:
- Permintaan URL di masa mendatang harus dilakukan dengan URL baru.
- Siapa pun yang mengajukan permintaan harus memperbarui tautan mereka ke URL baru.
- Permintaan selanjutnya dapat diubah dari GET ke POST.
Poin terakhir itu adalah masalah teknis. Menurut standar resmi untuk kode status 301 :
“Catatan: Untuk alasan historis, agen pengguna DAPAT mengubah metode permintaan dari POST ke GET untuk permintaan berikutnya. Jika perilaku ini tidak diinginkan, kode status 308 (Pengalihan Permanen) dapat digunakan sebagai gantinya.”
Untuk SEO, ketika mesin pencari melihat pengalihan 301, mereka meneruskan peringkat halaman lama ke yang baru.
Sebelum melakukan perubahan, Anda harus berhati-hati saat menggunakan pengalihan 301. Pengalihan 301 hanya boleh digunakan jika perubahan ke URL baru bersifat permanen.
Kode status 301 tidak boleh digunakan jika perubahan bersifat sementara.
Selain itu, jika Anda berubah pikiran nanti dan kembali ke URL lama, URL lama mungkin tidak memiliki peringkat lagi dan mungkin memerlukan waktu untuk mendapatkan kembali peringkatnya.
Jadi, hal utama yang harus diingat adalah kode status 301 akan digunakan saat perubahan bersifat permanen.
302: Ditemukan
Hal utama yang harus dipahami tentang kode status 302 adalah berguna untuk situasi di mana URL diubah sementara.
Arti dari kode tanggapan ini adalah bahwa URL untuk sementara berada di URL yang berbeda, dan disarankan untuk menggunakan URL lama untuk permintaan di masa mendatang.
Kode status pengalihan 302 juga dilengkapi dengan peringatan teknis terkait GET dan Posting:
“Catatan: Untuk alasan historis, agen pengguna DAPAT mengubah metode permintaan dari POST ke GET untuk permintaan berikutnya. Jika perilaku ini tidak diinginkan, kode status 307 (Pengalihan Sementara) dapat digunakan sebagai gantinya.”
Referensi ke “alasan historis” dapat merujuk ke agen pengguna lama atau buggy yang dapat mengubah metode permintaan.
307: Pengalihan Sementara
Pengalihan 307 berarti URL yang diminta dipindahkan sementara, dan agen pengguna harus menggunakan URL asli untuk permintaan di masa mendatang.
Satu-satunya perbedaan antara kode status 302 dan 307 adalah agen pengguna harus meminta URL baru dengan permintaan HTTP yang sama dengan yang digunakan untuk meminta URL asli.
Itu berarti jika agen pengguna meminta halaman dengan permintaan GET, maka agen pengguna harus menggunakan permintaan GET untuk URL sementara yang baru dan tidak dapat menggunakan permintaan POST.
Dokumentasi Mozilla tentang kode status 307 menjelaskannya lebih jelas daripada dokumentasi resmi.
“Server mengirimkan respons ini untuk mengarahkan klien untuk mendapatkan sumber daya yang diminta di URI lain dengan metode yang sama yang digunakan dalam permintaan sebelumnya.
Ini memiliki semantik yang sama dengan kode respons HTTP 302 Ditemukan, dengan pengecualian bahwa agen pengguna tidak boleh mengubah metode HTTP yang digunakan: jika POST digunakan dalam permintaan pertama, POST harus digunakan dalam permintaan kedua.”
Selain kode status 307 yang membutuhkan permintaan berikutnya dari jenis yang sama (POST atau GET) dan 302 dapat berjalan baik, yang lainnya sama antara kode status 302 dan 307.
302 Vs. 307
Anda dapat menangani redirect melalui file konfigurasi server .htaccess di Apache, file example.conf di Nginx atau melalui plugin jika Anda menggunakan WordPress.
Dalam semua contoh, mereka memiliki sintaks yang sama untuk menulis aturan pengalihan. Mereka berbeda hanya dengan perintah yang digunakan dalam file konfigurasi. Misalnya, pengalihan di Apache akan terlihat seperti ini:
Opsi +FollowSymlinks Mesin Tulis Ulang aktif RedirectMatch 301 ^/oldfolder/ /newfolder/
(Anda dapat membaca tentang symlink di sini .)
Di server Nginx, tampilannya akan seperti ini:
tulis ulang ^/oldfolder/ /newfolder/ permanent;
Perintah yang digunakan untuk memberi tahu kode status pengalihan server dan perintah tindakan berbeda.
Misalnya:
- Kode status pengalihan server: “ 301″ vs. “permanen.”
- Perintah tindakan: “RedirectMatch” vs. “rewrite.”
Tetapi sintaks pengalihan ( ^/oldfolder/ /newfolder/ ) sama untuk keduanya.
Di Apache, pastikan modul mod_rewrite dan mod_alias (bertanggung jawab untuk menangani pengalihan) diaktifkan di server Anda.
Karena jenis server yang paling banyak tersebar adalah Apache, berikut adalah contoh untuk file .htaccess apache.
Pastikan file .htaccess memiliki dua baris ini di atas aturan redirect dan letakkan aturan di bawahnya:
Opsi +FollowSymlinks Mesin Tulis Ulang aktif
Baca dokumentasi resmi untuk mempelajari lebih lanjut tentang RewriteEngine .
Untuk memahami contoh di bawah ini, Anda dapat merujuk ke tabel di bawah ini tentang dasar-dasar RegExp .
* | nol kali atau lebih |
+ | Satu kali atau lebih |
. | setiap karakter tunggal |
? | Nol atau satu kali |
^ | Mulai dari string |
$ | Akhir dari string |
a|b | ATAU operan “|” a atau b |
(dengan) | mengingat kecocokan yang akan digunakan saat memanggil $1 |
Cara Membuat Pengalihan Untuk Satu URL
Jenis pengalihan yang paling umum dan banyak digunakan adalah saat menghapus halaman atau mengubah URL.
Misalnya, Anda mengubah URL dari /old-page/ ke /new-page/. Aturan pengalihan adalah:
RewriteRule ^halaman-lama(/?|/.*)$ /halaman-baru/ [R=301,L]
Atau
RedirectMatch 301 ^/halaman-lama(/?|/.*)$ /halaman-baru/
Satu-satunya perbedaan antara kedua metode ini adalah yang pertama menggunakan modul mod_rewrite Apache, dan yang kedua menggunakan mod_alias. Itu bisa dilakukan dengan menggunakan kedua metode.
Ekspresi reguler “^” berarti URL harus dimulai dengan “/old-page” sementara (/?|/.*)$ menunjukkan bahwa apa pun yang mengikuti “/old-page/” dengan garis miring “/” atau tanpa tepat pertandingan harus dialihkan ke /new-page/.
Kita juga bisa menggunakan (.*), yaitu ^/old-page(.*), tetapi masalahnya adalah, jika Anda memiliki halaman lain dengan URL yang mirip seperti /old-page-other/, itu juga akan dialihkan saat kami hanya ingin mengarahkan ulang /old-page/.
URL berikut akan cocok dan diarahkan ke halaman baru:
/halaman lama/ | /halaman baru/ |
/ halaman lama | /halaman baru/ |
/old-page/?utm_source=facebook.com | /new-page/?utm_source=facebook.com |
/halaman-lama/halaman-anak/ | /halaman baru/ |
Ini akan mengalihkan variasi URL halaman ke yang baru. Jika kita menggunakan redirect dalam bentuk berikut:
Redirect 301 /halaman-lama/ /halaman-baru/
Tanpa ekspresi reguler, semua URL dengan string kueri UTM, misalnya, /old-page?utm_source=facebook.com (yang umum karena URL digunakan untuk dibagikan melalui jejaring sosial), akan berakhir sebagai 404.
Bahkan /halaman lama tanpa garis miring “/” akan berakhir sebagai 404.
Redirect Semua Kecuali
Katakanlah kita memiliki banyak URL seperti /category/old-subcategory-1/, /category/old-subcategory-2/, /category/final-subcategory/ dan ingin menggabungkan semua subkategori menjadi /category/final-subcategory/ . Kami membutuhkan aturan “semua kecuali” di sini.
RewriteCond %{REQUEST_URI} !/category/final-subcategory/ RewriteCond %{REQUEST_FILENAME} !-f Aturan Tulis Ulang ^(kategori/). /kategori/subkategori-final/ [R=301,L]
Di sini, kami ingin mengarahkan semua di bawah /category/ pada baris ketiga kecuali jika itu adalah /category/final-subcategory/ pada baris keempat. Kami juga memiliki aturan “!-f” di baris kedua, mengabaikan file apa pun seperti gambar, CSS, atau file JavaScript.
Jika tidak, jika kita memiliki beberapa aset seperti “/category/image.jpg”, itu juga akan dialihkan ke “/final-subcategory/” dan menyebabkan kerusakan gambar.
Perubahan Direktori
Anda dapat menggunakan aturan di bawah ini jika Anda melakukan restrukturisasi kategori dan ingin memindahkan semuanya dari direktori lama ke direktori baru.
RewriteRule ^direktori-lama$ /direktori-baru/ [R=301,NC,L] RewriteRule ^direktori-lama/(.*)$ /direktori-baru/$1 [R=301,NC,L]
Saya menggunakan $1 di target untuk memberi tahu server bahwa server harus mengingat semua yang ada di URL yang mengikuti /direktori lama/ (yaitu, /direktori lama/subdirektori/) dan meneruskannya (yaitu, “/subdirektori/”) ke tujuan. Akibatnya, itu akan dialihkan ke /new-directory/subdirectory/.
Saya menggunakan dua aturan: satu kasus tanpa garis miring pada akhirnya dan yang lainnya dengan garis miring.
Saya dapat menggabungkannya menjadi satu aturan menggunakan (/?|.*)$ RegExp di bagian akhir, tetapi itu akan menyebabkan masalah dan menambahkan garis miring “//” ke bagian akhir URL ketika URL yang diminta tanpa garis miring memiliki string kueri (yaitu, “/old-directory?utm_source=facebook” akan dialihkan ke “/new-directory//?utm_source=facebook”).
Hapus Sebuah Kata Dari URL
Katakanlah Anda memiliki 100 URL di situs web Anda dengan nama kota “Chicago” dan ingin menghapusnya.
Untuk URL http://yourwebiste.com/example-chicago-event/, aturan pengalihannya adalah:
RewriteRule ^(.*)-chicago-(.*) http://%{SERVER_NAME}/$1-$2 [NC,R=301,L]
Jika contoh URL dalam bentuk http://yourwebiste.com/example/chicago/event/, maka pengalihannya adalah:
RewriteRule ^(.*)/chicago/(.*) http://%{SERVER_NAME}/$1/$2 [NC,R=301,L]
Tetapkan URL Kanonis
Memiliki URL kanonis adalah bagian terpenting dari SEO.
Jika hilang, Anda dapat membahayakan situs web Anda dengan masalah duplikat konten karena mesin telusur memperlakukan URL dengan versi “www” dan “non-www” sebagai halaman berbeda dengan konten yang sama.
Oleh karena itu, Anda harus memastikan bahwa Anda menjalankan situs web hanya dengan satu versi yang Anda pilih.
Jika Anda ingin menjalankan situs web Anda dengan versi “www”, gunakan aturan ini:
RewriteCond %{HTTP_HOST} ^yourwebsite.com [NC] RewriteRule ^(.*)$ http://www.yourwebsite.com/$1 [L,R=301]
Untuk versi “non-www”:
RewriteCond %{HTTP_HOST} ^www.yourwebsite.com [NC] RewriteRule ^(.*)$ http://yourwebsite.com/$1 [L,R=301]
Garis miring juga merupakan bagian dari kanonikalisasi karena URL dengan garis miring di akhir atau tanpa garis miring juga diperlakukan berbeda.
RewriteCond %{REQUEST_FILENAME} !-f Aturan Tulis Ulang ^(.*[^/])$ /$1/ [L,R=301]
Ini akan memastikan /contoh-halaman dialihkan ke /contoh-halaman/. Anda dapat memilih untuk menghapus garis miring alih-alih menambahkan maka Anda memerlukan aturan lain di bawah ini:
RewriteCond %{REQUEST_FILENAME} !-d Aturan Tulis Ulang ^(.*)/$ /$1 [L,R=301]
Pengalihan HTTP Ke HTTPS
Setelah inisiatif Google untuk mendorong pemilik situs web menggunakan SSL, migrasi ke HTTPS adalah salah satu pengalihan yang umum digunakan yang dimiliki hampir setiap situs web.
Aturan penulisan ulang di bawah ini dapat digunakan untuk memaksa HTTPS di setiap situs web.
RewriteCond %{HTTP_HOST} ^yourwebsite.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.yourwebsite.com [NC] Aturan Tulis Ulang ^(.*)$ https://www.yourwebsite.com/$1 [L,R=301,NC]
Dengan menggunakan ini, Anda dapat menggabungkan pengalihan versi www atau non-www menjadi satu aturan pengalihan HTTPS.
Redirect Dari Domain Lama Ke Baru
Ini juga salah satu pengalihan yang paling sering digunakan saat Anda memutuskan untuk mengubah citra dan perlu mengubah domain Anda. Aturan di bawah mengalihkan domain-lama.com ke domain-baru.com.
RewriteCond %{HTTP_HOST} ^old-domain.com$ [ATAU] RewriteCond %{HTTP_HOST} ^www.domain-lama.com$ RewriteRule (.*)$ http://www.new-domain.com/$1 [R=301,L]
Ini menggunakan dua kasus: satu dengan versi “www” dari URL dan satu lagi “non-www” karena setiap halaman karena alasan historis mungkin memiliki tautan masuk ke kedua versi.
Sebagian besar pemilik situs menggunakan WordPress dan mungkin tidak memerlukan file .htaccess untuk pengalihan tetapi gunakan plugin sebagai gantinya.
Penanganan pengalihan menggunakan plugin mungkin sedikit berbeda dari apa yang telah kita bahas di atas. Anda mungkin perlu membaca dokumentasinya untuk menangani RegExp dengan benar untuk plugin tertentu.
Dari yang sudah ada, saya akan merekomendasikan plugin gratis bernama Redirection , yang memiliki banyak parameter untuk mengontrol aturan pengalihan dan banyak dokumen berguna .
Alihkan Praktik Terbaik
1. Jangan Alihkan Semua 404 URL Rusak Ke Beranda
Kasus ini sering terjadi ketika Anda terlalu malas untuk menyelidiki URL 404 Anda dan memetakannya ke halaman arahan yang sesuai.
Menurut Google, semuanya masih diperlakukan sebagai 404.
Jika Anda memiliki terlalu banyak halaman seperti ini, Anda harus mempertimbangkan untuk membuat halaman 404 yang indah dan melibatkan pengguna untuk menjelajah lebih jauh atau menemukan sesuatu selain yang mereka cari dengan menampilkan opsi pencarian.
Sangat disarankan oleh Google bahwa konten halaman yang dialihkan harus setara dengan halaman lama . Jika tidak, pengalihan semacam itu dapat dianggap sebagai soft 404, dan Anda akan kehilangan peringkat halaman tersebut.
2. Dapatkan Hak Pengalihan Khusus Laman Seluler
Jika Anda memiliki URL yang berbeda untuk situs web desktop dan seluler (yaitu, “example.com” untuk desktop dan “m.example.com” untuk seluler), Anda harus memastikan untuk mengalihkan pengguna ke laman versi seluler yang sesuai.
Benar : “example.com/sport/” menjadi “m.example.com/sport/”
Salah : “example.com/sport/” menjadi “m.example.com”
Juga, Anda harus memastikan bahwa jika satu halaman adalah 404 di desktop, itu juga harus 404 di seluler.
Jika Anda tidak memiliki versi seluler untuk suatu halaman, Anda dapat menghindari pengalihan ke versi seluler dan menyimpannya di halaman desktop.
3. Cara Menggunakan Penyegaran Meta
Dimungkinkan untuk melakukan redirect menggunakan tag meta refresh seperti contoh di bawah ini:
<meta http-equiv=”refresh” content=”0;url=http://example.com/new-page/” />
Jika Anda memasukkan tag ini di /old-page/, itu akan mengarahkan pengguna langsung ke /new-page/.
Google tidak melarang pengalihan ini, tetapi tidak menyarankan untuk menggunakannya.
Menurut John Mueller, mesin telusur mungkin tidak dapat mengenali jenis pengalihan tersebut dengan benar . Hal yang sama juga berlaku untuk pengalihan JavaScript.
4. Hindari Redirect Chains
Pesan ini ditampilkan saat Anda memiliki penyiapan ekspresi reguler yang salah dan berakhir dalam loop tak terbatas.
Tangkapan layar oleh penulis, Desember 2022
Biasanya, ini terjadi ketika Anda memiliki rantai pengalihan.
Katakanlah Anda telah lama mengalihkan halaman 1 ke halaman 2. Anda mungkin lupa bahwa halaman 1 dialihkan dan memutuskan untuk mengalihkan halaman 2 ke halaman 1 lagi.
Akibatnya, Anda akan berakhir dengan aturan seperti ini:
Aturan Tulis Ulang ^halaman1 /halaman2 [R=301,NC,L] Aturan Tulis Ulang ^halaman2 /halaman1 [R=301,NC,L]
Ini akan membuat loop tak terbatas dan menghasilkan kesalahan yang ditunjukkan di atas.
Kesimpulan
Mengetahui apa itu pengalihan dan situasi mana yang memerlukan kode status tertentu sangat penting untuk mengoptimalkan halaman web dengan benar. Ini adalah bagian inti dari pemahaman SEO.
Banyak situasi memerlukan pengetahuan yang tepat tentang pengalihan, seperti memigrasikan situs web ke domain baru atau membuat URL laman penahan sementara untuk laman web yang akan kembali dengan URL normalnya.
Meskipun begitu banyak kemungkinan dengan plugin, plugin dapat disalahgunakan tanpa memahami dengan benar kapan dan mengapa menggunakan jenis pengalihan tertentu.