301 redirect di htaccess ke domain lain. Kapan sebaiknya menggunakan rel = "canonical"? Jenis pengalihan lainnya

Seringkali dalam pengembangan web perlu dilakukan pengalihan dari satu halaman (misalnya halaman usang) ke halaman lain. Pada saat yang sama, pengalihan dapat dilakukan menggunakan metode yang berbeda - baik dengan atau tanpa kehilangan bobot halaman. Namun lebih lanjut tentang ini.

Seperti yang Anda ketahui, halaman mana pun diindeks dari waktu ke waktu dan memiliki bobot tersendiri di jaringan. Jika suatu halaman menjadi tidak relevan lagi, tentu saja dapat dihapus, namun pengguna yang mengkliknya akan berakhir di bagian situs yang tidak ada dan akhirnya meninggalkannya. Dianggap lebih tepat untuk melakukan pengalihan 301 ke bagian situs yang relevan pada halaman tersebut. Pertama, pengguna tidak akan melihat kesalahan dan bobot halaman lama akan sepenuhnya dipindahkan ke halaman baru.

Pengalihan halaman dapat dilakukan menggunakan metode yang berbeda. Mari kita lihat yang utama.

Pengalihan 301 melalui .htaccess

Di root situs Anda terdapat file (jika tidak ada, buatlah) bernama .htaccess. Buka untuk mengedit dan gunakan salah satu metode berikut.

Redirect permanen dan Redirect 301 - dengan mudah melakukan pengalihan 301 dari satu halaman ke halaman (atau situs) lainnya. Yang pertama adalah link situs lama (catatan - tanpa domain), yang kedua adalah link ke halaman baru (bisa berupa situs yang sama atau yang benar-benar baru).

Contoh:
Pengalihan permanen /staraya-stranica.php http://newsait.ru/novaya-stranica.php
(di sini kita cukup mengalihkan dari halaman lama ke halaman baru)

Pengalihan 301 / http://newsait.ru/
(di sini / berarti segala sesuatu mulai dari halaman utama situs dan semua subhalamannya (subdirektori) akan dialihkan ke domain baru; yaitu pengalihan dari domain ini ke domain lain.)

Pengalihan RewriteRule adalah pengalihan yang lebih kompleks daripada opsi sebelumnya. Memerlukan modul mod_rewrite untuk terhubung ke hosting agar dapat berfungsi dengan baik (biasanya selalu diaktifkan). Cara ini sering digunakan untuk mengalihkan halaman dari www ke halaman yang sama tanpa www dan sebaliknya. Mari kita lihat:

Pengalihan domain dari www ke non-www
Opsi +IkutiSymLinks
Mesin Tulis Ulang Aktif
Tulis UlangCond %(HTTP_HOST) ^www\.(.*)
Aturan Penulisan Ulang ^(.*)$ http://%1/$1

Redirect dari non-www ke domain dengan www
Mesin Tulis Ulang Aktif
Tulis UlangCond %(HTTP_HOST) !^www\.(.*)
Aturan Penulisan Ulang ^(.*)$ http://www.%1/$1

301 pengalihan dari domain ke domain dan pengecualian untuk tautan /market/vm2_market.xml. Itu. semua permintaan (kecuali /market/vm2_market.xml) dari domain lama ke domain baru akan dieksekusi.

Mesin Tulis Ulang menyala

301 Semua permintaan (kecuali /market/vm2_market.xml dan link /texts (dan semua “sublink”)) dari domain lama ke domain baru akan dieksekusi. Aturan untuk mengalihkan sublink tertentu (RedirectMatch 301) juga berfungsi di sini.

Mesin Tulis Ulang menyala
RedirectMatch 301 ^/texts/data/msg/(.*)\.png$ http://olddomen.ru/texts/data/rimage/msg.php?id=$1
Penulisan UlangCond %(REQUEST_URI) !^/teks*
Penulisan UlangCond %(REQUEST_URI) !^/market/vm2_market.xml$
Aturan Penulisan Ulang ^(.*)$ http://newdomen.ru/$1

RedirectMatch 301 adalah metode pengalihan bagus lainnya, mirip dengan Redirect 301 tetapi memiliki lebih banyak fungsi. Yaitu, dapat digunakan untuk melakukan pengalihan berdasarkan ekspresi reguler.

Contoh:
RedirectMatch 301 ^/direktori lama/ http://situs/direktori baru/
(Di sini akan mengarahkan seluruh direktori ke yang baru)

RedirectMatch 301 ^(.*)$ http://site
(Mengalihkan semua halaman dari domain lama ke domain baru menggunakan pengalihan 301 (bobot juga ditransfer ke situs baru))

RedirectMatch 301 (.*)\..php
(Mengubah halaman dari ekstensi html ke ekstensi php)

RedirectMatch 301 /dirA/(.*)\..php
(Memicu pengalihan dari direktori dirA ke direktori dirB hanya ketika mengakses skrip PHP.
.php -> http://site/dirB/page.php - akan berfungsi
http://site/dirB/page.html - tidak akan berfungsi)

Sintaks untuk ekspresi reguler
. - Sebuah titik menggantikan karakter arbitrer.
- menunjukkan daftar karakter yang cocok dengan huruf a, b, atau c.
[^abc] - daftar karakter yang tidak termasuk dalam rentang yang ditentukan. Cocok dengan karakter apa pun kecuali a, b, atau c.
* - berarti karakter sebelumnya dapat diulang (0 kali atau lebih).
* - perintah akan menemukan karakter berurutan dari kumpulan tertentu.
[^abc]* - justru sebaliknya.

.* - benar-benar menggantikan kumpulan karakter apa pun. ".*" - akan menemukan semua substring di antara tanda kutip.
^ - awal baris (jika digunakan di awal ekspresi).
$ - menunjukkan akhir baris.

\w - huruf, angka atau garis bawah _.
\d - menggantikan nomor apa pun.
\D - menggantikan karakter apa pun, tetapi bukan angka.
- menggantikan nomor apa pun.
- huruf apa pun dari a hingga z (seluruh rangkaian karakter Latin) dalam huruf kecil.
- huruf apa saja dari A sampai Z dalam huruf UPPER.
- huruf apa pun dari a sampai Z dalam hal apa pun.
- sama.

Karakter khusus yang digunakan dalam aturan dan artinya.
^ - karakter khusus di awal baris;
$ - karakter khusus akhir baris;
! - karakter negasi khusus;
. - titik, menggantikan karakter apa pun, tetapi hanya satu;
() - pengelompokan;
\ adalah garis miring “escaping”; karakter berikutnya setelahnya dianggap sebagai karakter biasa, bukan karakter khusus.

Pengubah digunakan setelah karakter biasa, karakter khusus, atau grupnya dan memungkinkan Anda memperluas kemampuan templat untuk memicu aturan.
? - Simbol diulang 0 atau 1 kali.
+ - diulang dari 1 hingga 65536 kali.
* - diulang dari 0 hingga 65536 kali.

Bendera yang menentukan tambahan pilihan aturan yang akan digunakan. Mereka dicantumkan dalam tanda kurung siku yang dipisahkan dengan koma, misalnya atau .
NC - Bendera NoCase, yang menonaktifkan pemeriksaan huruf besar-kecil saat aturan dipicu.
R - Redirect flag, melakukan proses menghentikan perubahan URL dan mengembalikan hasilnya. Nilai yang paling umum digunakan adalah R=301, namun nilai lain juga dimungkinkan untuk pengalihan sementara (302, PINDAHKAN SEMENTARA).
L - Bendera terakhir, menghentikan pembentukan URL dan garis dianggap final.

Redirect melalui php.

Jika Anda memiliki halaman PHP biasa yang perlu dialihkan ke alamat baru, maka Anda dapat melakukannya tanpa .htaccess

Contoh:

Jika Anda memiliki halaman PHP biasa yang perlu dialihkan ke alamat baru, maka Anda dapat melakukannya tanpa .htaccess
Redirect melalui javascript.
Pengalihan juga dapat dilakukan menggunakan javascript biasa (walaupun tanpa memindahkan bobot halaman).
window.lokasi="http://situs/kategori/";
(pengalihan reguler ke halaman situs)

alert("Anda sekarang akan dialihkan!"); window.lokasi="http://situs/kategori/";

(pengalihan reguler ke halaman situs sebelum pesan ditampilkan kepada pengguna)

Pengalihan 301 atau Pengalihan Permanen 301 adalah aturan yang secara otomatis mengalihkan pengguna ke alamat halaman lain. Dengan bantuannya, Anda dapat menggabungkan halaman lama dengan halaman baru atau memindahkan situs ke domain lain, menghapus banyak duplikat dari situs, dan banyak lagi. Suatu hal yang sangat berguna - jadi Anda perlu mempelajari cara melakukannya dengan benar!

Juga, dengan pengalihan 301, TCI (baca) dan PR digabungkan - mis. Anda dapat menyimpan nilai lama di alamat baru. Anda mungkin tidak akan kalah sama sekali di mata mesin pencari. Mari beralih dari teori ke praktik.

Cara mengatur pengalihan 301 di htaccess

File bernama .htaccess terletak di kategori utama situs Anda. Ini adalah file layanan di mana kami akan menentukan aturan perekatan. Buka file dengan notepad (saya sarankan notepad++ untuk menghindari masalah dengan pengkodean). Jangan lupa bahwa ini adalah salah satu poin penting di dalamnya.

Template umum untuk .htaccess yang akan kita gunakan:

RewriteCond [Perbandingan] [Kondisi] [Bendera] RewriteCond [Perbandingan] [Kondisi] [Bendera] Aturan Penulisan Ulang [Pola] [Substitusi] [Bendera]

Sekarang mari kita langsung menangani pengalihan dan melihat contoh spesifik.

Saya sudah menulis artikel tentangnya, tetapi untuk berjaga-jaga saya akan merangkumnya di sini agar Anda lebih nyaman menggunakan halaman tersebut.

Contoh penggunaan 301 redirect Redirect dari index.php ke halaman beranda

Untuk mengaturnya, Anda perlu menulis kode berikut di file Anda, yang akan mengarahkan pengunjung dari site.ru/index.php ke site.ru:

Penulisan UlangCond %(THE_REQUEST) ^(3,9)\ /index\.php\ Aturan Penulisan Ulang HTTP ^index\.php$ http://site.ru/

Jika Anda juga perlu melakukan redirect dari index.html, cukup ganti .php dengan .html pada kode di atas

Merekatkan alias situs

Jika Anda memiliki beberapa domain dan ingin mengarahkan semuanya ke situs utama, kami menggunakan:

RewriteCond %(HTTP_HOST) ^vash-sait.com$ RewriteCond %(HTTP_HOST) ^www.vash-sait.com$ RewriteCond %(REQUEST_URI) !^/robots.* RewriteRule ^(.*)$ http://vash- sait.ru/$1

Perhatikan 2 baris pertama, ini menunjukkan cermin di zone.com, jika Anda memiliki satu atau beberapa zona, tambahkan aturan.

Redirect dari www ke tanpa www

Saya sudah menjelaskan metode ini sebelumnya, tapi saya akan mengulanginya. Untuk merekatkan mirror dan memilih domain utama tanpa www, kami menulis:

Penulisan UlangCond %(HTTP_HOST) ^www.site\.ru$ Aturan Penulisan Ulang ^(.*)$ http://site.ru/$1

Redirect dari domain tanpa www ke domain dengan www

Tindakan ini kebalikan dari yang sebelumnya, hanya mirror utama yang ada di sini www.site.ru:

Penulisan UlangCond %(HTTP_HOST) ^site\.ru$ Aturan Penulisan Ulang ^(.*)$ http://www.site.ru/$1

Pengalihan 301 halaman dengan dan tanpa garis miring

Ini adalah jenis duplikat lainnya, di sini kita akan menggabungkan halaman site.ru/category/ dan site.ru/category, seperti yang Anda lihat, tidak ada garis miring di akhir URL kedua:

Penulisan UlangCond %(REQUEST_FILENAME) !-d Penulisan UlangCond %(REQUEST_URI) ^(.+)/$ Aturan Penulisan Ulang ^(.+)/$ /$1

Sebaliknya, jika Anda ingin meninggalkan garis miring di akhir URL, maka Anda memerlukan opsi ini:

RewriteBase / RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ Aturan Penulisan Ulang ^(.*[^/])$ $1/

Jika karena alasan tertentu Anda memiliki URL seperti site.ru/category//article.html, gunakan kode:

RewriteCond %(REQUEST_URI) ^(.*)//(.*)$ RewriteRule . %1/%2

dimana, “//” dapat diganti dengan “—” atau karakter ganda apa pun di URL.

Penggantian kategori massal

Kebetulan Anda mengganti nama suatu kategori, tetapi ribuan URL ditetapkan ke kategori tersebut. Untuk menghindari menjadi tua saat menulis ribuan pengalihan yang identik, gunakan:

Aturan Penulisan Ulang ^(.*)/kategori lama/(.*)$ $1/kategori baru/$2

Aturan Penulisan Ulang kategori lama /(.*) / kategori lama /$1

Arahkan ulang ke halaman baru

Redirect paling sederhana dari halaman ke halaman, tulis saja seperti ini:

Redirect 301 /old-post.html http://new-site.ru/new-post.html

Dimana old-post.html adalah halaman lama Anda, dan new-site.ru/new-post.html adalah halaman baru dan dapat berada di domain mana pun (termasuk domain Anda saat ini).

Redirect untuk url dengan parameter

Halaman dengan parameter lebih sulit untuk dialihkan; ambil contoh http://site.ru/page.php?sort=articles. Parameternya di sini adalah “sort=artikel”. Kodenya akan menjadi sebagai berikut:

RewriteCond %(QUERY_STRING) sort=articles RewriteRule .* http://site.ru/page.php?

Bekerja dengan ekstensi

Kita hapus .html dari url (untuk menghapus .php, jangan lupa ganti $1.html dengan $1.php):

Aturan Penulisan Ulang ^(([^/]+/)*[^.]+)$ /$1.html [L]

Kita ubah .php menjadi .html pada URL dan sebaliknya (jangan lupa tukar tempat pada kode):

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Perbaiki pengalihan 301 ke domain baru

Saya menyoroti poin ini secara terpisah, karena... ini lebih terkait dengan transfer ke domain lain. Ada poin penting di sini: jangan lewatkan arahan untuk mengedit robot - ini ditunjukkan pada baris 3 kode.

RewriteCond %(REQUEST_FILENAME) robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 Penulisan UlangCond %(HTTP_HOST) ^www.site\.ru Aturan Penulisan Ulang ^(.*)$ http://new-site.ru/$1

Dengan bantuan intrik sederhana seperti itu, kami akan menghilangkan halaman duplikat, sehingga meningkatkan pengoptimalan internal kami dan, karenanya, kualitas situs.

Jika Anda memiliki pertanyaan, tulis di komentar - kami akan menyelesaikannya :)

Apa yang terjadi adalah halaman web atau seluruh situs berpindah ke URL baru secara permanen. Dalam hal ini, perlu mendaftarkan pengalihan 301. Apa ini? Pengalihan 301 adalah pengalihan pengunjung dan robot pencari dari satu URL ke URL lainnya.

Pengalihan 301 biasanya ditulis dalam kasus berikut:

  • saat menempelkan cermin situs web dengan www dan tanpa www;
  • saat memindahkan situs web ke domain baru;
  • saat memindahkan situs web ke CMS baru;
  • ketika URL halaman berubah;
  • saat menghilangkan halaman situs duplikat.
  • Anehnya, kasus terakhir ini dianggap sangat jarang, meskipun ketika menghilangkan duplikat, pengalihan 301 sangat membantu, kecuali, tentu saja, Anda memiliki keinginan untuk mengutak-atik kode CMS itu sendiri. Dan jika Anda terlibat dalam optimasi mesin pencari situs web, maka pertanyaan tentang ada tidaknya duplikat pada halaman situs web pasti membuat Anda khawatir.

    Pengalihan 301 luar biasa karena mentransfer halaman pr dan situs, dan, karenanya, jus tautan ke URL baru. Tapi itu tidak mentransfer sanksi yang dikenakan pada domain lama oleh mesin pencari, dan ini sangat bagus.

    Jadi, kami mengetahui apa itu pengalihan 301. Langsung saja kita ke cara membuatnya.

    Cara mengatur pengalihan 301

    Untuk memulai, saya akan memberikan daftar operator ekspresi reguler yang akan berguna bagi Anda saat menyiapkan pengalihan 301.

    • ^ — pembatasan di sebelah kiri;
    • $—batasan kanan;
    • * - 0 karakter atau lebih;
    • + - 1 karakter atau lebih;
    • . - simbol apa pun;
    • \ - perisai;
    • () - variabel;
    • — rentang nilai.

    Ada berbagai cara untuk melakukan pengalihan 301. Secara pribadi, saya, seperti banyak webmaster lainnya, mengkonfigurasinya melalui file .htaccess. Hampir setiap CMS populer memiliki file ini, dan terletak di root situs Anda. Anda dapat mengunduh .htaccess menggunakan klien FileZila:

    File .htaccess harus dibuka dengan editor teks, misalnya Notepad++. Di atas semua kode pengalihan Anda harus menulis baris berikut:

    Mesin Tulis Ulang Aktif

    Jika tidak, pengalihan tidak akan berhasil.

    Banyak orang secara keliru percaya bahwa mereka dapat melakukannya tanpa pengalihan 301. Saya dapat memberitahu Anda bahwa ini diperlukan ketika mengoptimalkan hampir setiap situs web. Misalnya, setiap situs web pada awalnya tersedia di dua alamat - dengan www dan tanpa www. Masalahnya adalah hal ini menyebabkan erosi massa referensi. Saya akan menjelaskan alasannya. Situs lain tidak peduli yang mana dari dua ejaan domain Anda yang utama. Jika mereka menautkan ke Anda, mereka dapat menyertakan opsi dengan www atau tanpa www di alamatnya. Massa referensi pada akhirnya akan kabur, dan mesin pencari hanya akan mengindeks satu opsi. Dahulu kala, mereka umumnya menganggapnya sebagai situs yang sangat berbeda.

    Agar situs Anda tumbuh secara aktif posisinya dan tidak kehilangan banyak tautan, Anda perlu mendaftarkan pengalihan 301 di file .htaccess.

    Dari www ke tanpa www:

    Penulisan UlangCond %(HTTP_HOST) ^www.site.ru$ Aturan Penulisan Ulang (.*) http://site.ru/$1

    Dari tanpa www ke www:

    Penulisan UlangCond %(HTTP_HOST) ^site.ru$ Aturan Penulisan Ulang (.*) http://www.site.ru/$1

    Jika kode pengalihan di atas tidak berfungsi, gunakan entri berikut untuk mengalihkan dari www ke tanpa www:

    Penulisan UlangCond %(HTTP_HOST) ^www\.(.*)$ Aturan Penulisan Ulang ^(.*)$ http://%1/$1

    Ingatlah bahwa alih-alih site.ru Anda harus mendaftarkan domain situs Anda. Setelah langkah-langkah ini, simpan file .htaccess dan unggah ke server, ganti file lama dengan file tersebut.

    Pengalihan 301 sering kali membantu saya ketika saya kesulitan dengan halaman duplikat di sebuah situs. Dan saya melakukan ini hampir setiap kali saya melakukan optimasi internal pada situs web lain. Secara pribadi, saya belum pernah bertemu CMS yang tidak menghasilkan duplikat. Meskipun jika kita berbicara tentang situs kecil, ada pengecualian. Tidak tahu apa yang saya bicarakan sekarang? Kemudian berlangganan, sebentar lagi saya akan menulis artikel lengkap tentang duplikat.

    Kebetulan halaman situs dapat diakses melalui dua URL berbentuk: http://site.ru/category/page.html dan http://site.ru/page.html. Dalam hal ini kita berbicara tentang duplikat. Misalnya, kami ingin halaman hanya dapat diakses di alamat tipe kedua. Dalam hal ini, untuk menghilangkan dobel, Anda perlu menulis pengalihan berikut:

    Aturan Penulisan Ulang ^(.*)category/page.html$ http://site.ru/page.html

    Sekarang bayangkan situasi di mana Anda telah mengubah alamat halaman situs web. Untuk apa? Ya, alasannya bisa bermacam-macam. Misalnya, saya baru-baru ini melakukan ini untuk memperpendek panjang URL. Untuk melakukan ini, Anda memerlukan pengalihan berikut:

    Aturan Penulisan Ulang ^(.*)halaman-lama.html$ http://site.ru/new-page.html

    Jika kode pengalihan di atas tidak berhasil, coba yang berikut ini:

    Aturan Penulisan Ulang ^halaman-lama.html$ http://site.ru/new-page.html

    Atau ini:

    Aturan Penulisan Ulang ^halaman-lama.html$ /halaman-baru.html

    Jika Anda perlu mengalihkan dari URL lama dalam bahasa Cyrillic ke URL baru (baik dalam Cyrillic atau Latin), maka entri akan terlihat seperti:

    Aturan Penulisan Ulang ^url-lama.html /halaman-baru.html

    Seperti yang Anda pahami, di atas kami melihat pengalihan dari satu URL ke URL lain dalam situs yang sama. Untuk melakukan ini, kami menggunakan mod_rewrite dan direktif RewriteRule. Namun Anda bisa menggunakan opsi yang lebih sederhana untuk menulis pengalihan menggunakan direktif Redirect:

    Redirect 301 /old-page.html http://site.ru/new-page.html

    Kedua opsi perekaman pengalihan tersebut benar dan menyampaikan jus tautan serta indikator lainnya. Perbedaannya hanya karena mereka menggunakan arahan dari modul yang berbeda, dan karenanya memiliki sintaksis yang berbeda. Saat menggunakan direktif Redirect, alamat halaman lama tanpa http://site.ru ditulis terlebih dahulu, lalu alamat baru secara lengkap.

    Anda mungkin memerlukan pengalihan 301 saat memindahkan situs Anda dari domain lama ke domain baru:

    Mesin Tulis Ulang di RewriteCond %(HTTP_HOST) ^www\.old-domen\.ru$ RewriteRule ^(.*)$ http://new-domen.ru/$1 RewriteCond %(HTTP_HOST) ^old-domen\.ru$ RewriteRule ^(.*)$ http://new-domen.ru/$1

    Pengalihan serupa menggunakan arahan Redirect:

    Pengalihan 301 / http://new-domain.ru

    Anda dapat mengatur pengalihan URL 301 dengan parameter ke halaman situs lainnya, misalnya halaman utama:

    RewriteCond %(QUERY_STRING) ^cPath=373_703 Aturan Penulisan Ulang ^index\.php$ http://site.ru/?

    Contoh di atas adalah dari praktik saya, ketika saya melakukan optimasi internal sebuah situs di Joomla, yang memiliki banyak duplikat berbeda.

    Redirect dari site.ru/index.php ke site.ru (menghilangkan halaman utama duplikat):

    Penulisan UlangCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ Aturan Penulisan Ulang ^index\.php$ http://site.ru/

    Akibat adanya duplikat formulir site.ru/index.php di halaman utama situs, duplikat serupa mungkin muncul di halaman internal situs, misalnya site.ru/index.php/ page.html adalah duplikat dari halaman site.ru/page.html . Dalam hal ini, semua duplikat jenis ini dapat dihilangkan sekaligus menggunakan pengalihan:

    Aturan Penulisan Ulang ^index\.php/(.*)$ /$1

    Jika halaman utama situs Anda memiliki duplikat seperti site.ru/main.html, maka Anda harus memasukkan pengalihan berikut:

    RewriteEngine Pada RewriteCond %(THE_REQUEST) ^(3,9)\ /main\.html\ HTTP/ RewriteRule ^main\.html$ http://vash-sait.ru/

    atau opsi ini:

    Pengalihan 301 /main.html http://site.ru/

    Sekarang bayangkan situasi di mana Anda ingin semua halaman internal situs hanya dapat diakses di alamat c.html di bagian akhir. Maka Anda harus memasukkan pengalihan berikut:

    RewriteCond %(REQUEST_URI) (.*/[^/.]+)($|\?) RewriteRule .* %1.html RewriteRule ^(.*)/$ /$1.html

    Sebaliknya, jika Anda ingin semua halaman internal situs memiliki alamat tanpa .html di akhir, yaitu alamat seperti site.ru/page, maka Anda harus mendaftarkan pengalihan:

    Penulisan UlangCond %(REQUEST_URI) \.html$ Aturan Penulisan Ulang ^(.*)\.html$ /$1

    Jika tugasnya adalah mengalihkan dari URL dengan .htm di akhir ke alamat dengan .html di akhir, maka entri berikut harus ditambahkan ke .htaccess:

    Basis Penulisan Ulang / Aturan Penulisan Ulang ^(.*)\.htm$ $1.html

    Anda mungkin perlu mengalihkan URL tanpa akhiran ke URL dengan garis miring. Kemudian di file .htaccess Anda harus menulis yang berikut:

    RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !\..+$ RewriteCond %(REQUEST_URI) !/$ RewriteRule (.*) http://www.site.ru/$1/

    Jika tugasnya benar-benar berlawanan, dan Anda memerlukan pengalihan dari URL dengan garis miring di akhir ke alamat tanpa akhiran, tambahkan kode berikut:

    Penulisan UlangCond %(REQUEST_FILENAME) !-d Penulisan UlangCond %(REQUEST_URI) ^(.+)/$ Aturan Penulisan Ulang ^(.+)/$ /$1

    Untuk mendaftarkan pengalihan dari URL dengan parameter seperti http://site.ru/?page_id=111, tambahkan yang berikut ke .htaccess:

    RewriteCond %(QUERY_STRING) page_id=111 Aturan Penulisan Ulang ^ http://site.ru/new-page/

    Juga, baru-baru ini saya menemukan situs yang sertifikat keamanannya telah diperoleh, dan saya perlu mendaftarkan pengalihan dari http ke https:

    RewriteCond diskon %(HTTPS) RewriteRule ^(.*)$ https://%(HTTP_HOST)%(REQUEST_URI)

    Sekarang Anda tahu cara menyiapkan pengalihan 301. Tentu saja, ada kasus lain yang memerlukannya, tetapi saya telah membuat daftar yang paling populer. Setelah tugas apa pun yang terkait dengan pengoptimalan situs web, saya sarankan untuk memeriksa kesalahan.

    Cara memeriksa pengalihan 301

    Pengalihan 301 sangat mudah untuk diperiksa. Yang perlu Anda lakukan hanyalah memasukkan alamat halaman lama di browser Anda. Jika terjadi pengalihan ke URL baru, kemungkinan besar pengalihan tersebut terdaftar dengan benar. Dalam beberapa kasus, sebelum memeriksa pengalihan 301, Anda harus menghapus cache browser Anda. Jadi jika pengalihan tidak terjadi, Anda mungkin lupa melakukannya.

    Untuk akhirnya memastikan bahwa pengalihan 301 dikonfigurasi dengan benar, saya juga menyarankan untuk memeriksa respons server menggunakan layanan khusus, misalnya, 2ip.ru, atau bahkan lebih baik lagi, gunakan program Netpeak Spider, yang dengannya Anda dapat mengetahui banyak hal lainnya informasi tentang situs tersebut. Respons server harusnya adalah “301” atau “301 MovedPermanently -> 200 OK”.

    Saya harap Anda sekarang memahami cara mengonfigurasi pengalihan 301 dengan benar. Di atas saya memberikan cukup banyak contoh berbeda. Jika satu jenis data pengalihan tidak berfungsi, kemungkinan besar jenis data pengalihan lainnya akan berfungsi. Cobalah. Saya tidak bisa memastikan dengan pasti entri pengalihan mana yang akan berfungsi, karena saya bukan seorang programmer. Mungkin dari CMS atau pengaturan server. Letak kode redirect pada file .htaccess juga terkadang mempengaruhinya. Jika pengalihan tidak berhasil, coba pindahkan kodenya sedikit lebih tinggi di dalam file. Itu saja untukku. Semoga berhasil dalam optimasi situs web!

    Aturan diberikan untuk server Apache. Dalam aturan: %(QUERY_STRING) - menunjukkan fragmen URL setelah tanda tanya (mengatur nilai parameter CGI). Pemicuan aturan pengalihan tertentu ditentukan oleh apakah URL laman termasuk dalam aturan ini atau tidak. Tentang arti sebutan tertentu (^, $, NC, dst).

    Di bawah ini adalah aturan yang paling sering digunakan untuk menyiapkan file .htaccess untuk pengalihan 301. Lebih baik menempatkan semua aturan setelah dua baris:

    Opsi +IkutiSymLinks RewriteEngine Aktif Penulisan UlangCond %(HTTP_HOST) ^site\.ru$ Aturan Penulisan Ulang ^(.*)$ http://www.site.ru/$1 Penulisan UlangCond %(HTTP_HOST) ^www.site\.ru$ Aturan Penulisan Ulang ^(.*)$ http://site.ru/$1 Redirect 301 /was.php http://www.site.ru/new.php

    Dalam hal ini, alamat baru harus ditentukan lengkap dengan http dan nama domain.

    Aturan Penulisan Ulang ^dir /dir-new/$1

    Katakanlah alamat halamannya terlihat seperti: http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 , lalu untuk menyiapkan pengalihan 301 ke alamat baru, Anda perlu menggunakan aturan berikut:

    RewriteCond %(QUERY_STRING) ^IBLOCK_ID=1&SECTION_ID=111$ Aturan Penulisan Ulang ^dir/index\.php$ /new/sef/?

    Jika satu (atau lebih) parameter GET tidak ditentukan atau dapat memiliki nilai arbitrer (dalam contoh kita adalah SECTION_ID), Anda dapat menggunakan kode berikut:

    RewriteCond %(QUERY_STRING) ^IBLOCK_ID=1&SECTION_ID=(.*)$ Aturan Penulisan Ulang ^dir/index\.php$ /new/sef/?

    Jika Anda ingin mengatur pengalihan hanya untuk alamat http://www.site.ru/dir/, tetapi pada saat yang sama agar halaman http://www.site.ru/dir/index.php?IBLOCK_ID =1 terbuka di alamat lama, Anda perlu menggunakan karakter khusus $ dalam aturan.

    Aturan Penulisan Ulang ^dir/$ http://www.site.ru/new-dir/

    Untuk domain di zona Federasi Rusia, aturan yang sama berlaku, tetapi semua karakter Sirilik harus diganti dengan kode alternatif (dalam bahasa Latin). Secara khusus, zone.рф itu sendiri diubah menjadi .xn--p1ai.

    Penulisan UlangCond %(HTTP_HOST) ^situs lama\.ru$ Aturan Penulisan Ulang ^(.*)$ http://www.site.ru/$1

    Dan untuk domain di zona Federasi Rusia:

    Penulisan UlangCond %(HTTP_HOST) ^xn-...\.xn--p1ai$ Aturan Penulisan Ulang ^(.*)$ http://www.site.ru/$1 RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !\..(1,10)$ RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*)$ http://www.site. ru/$1/ RewriteCond %(REQUEST_FILENAME) !-d RewriteCond %(REQUEST_URI) ^(.+)/$ RewriteRule ^(.+)/$ http://www.site.ru/$1 Penulisan UlangCond %(HTTP_HOST) ^si-te\.ru$ Aturan Penulisan Ulang ^(.*)$ http://www.site.ru/si-te/ Aturan Penulisan Ulang ^bitrix/ /bitrix/admin/ Aturan Penulisan Ulang ^(.*)$ http://www.newsite.ru/new/ Aturan Penulisan Ulang ^dir(.*)$ /file-baru.php Aturan Penulisan Ulang ^dir/no-file.html /no-file-new.html Aturan Penulisan Ulang ^dir(.*)$ /all.php RedirectMatch 301 (.*)\.html$ http://www.new-site.ru$1.php

    Menentukan urutan pemuatan jenis file indeks yang terletak di akar direktori.

    Indeks Direktori indeks.html indeks.php indeks.htm indeks.shtml Penulisan UlangCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ Aturan Penulisan Ulang ^index\.php$ http://www.site.ru/ Penulisan UlangCond %(HTTP_HOST) ^test.site.ru$ Aturan Penulisan Ulang ^(.*)$ http://site.ru%(REQUEST_URI) Aturan Penulisan Ulang [^abc]/file-unik.html /file-unik.html

    Kode ini memungkinkan Anda menyetel pengalihan 301 dari semua folder seperti http://site.ruuniqe-file.html ke satu file di root /unique-file.html. Ini bisa berguna saat mendesain ulang situs dan mengubah tautan.

    Aturan Penulisan Ulang ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11

    Kode ini memungkinkan Anda membuat salinan halaman dengan alamat relatif /studio/news/detail.php?ID=230354&PAGEN_2=11 di /testovyi/test/

    Perhatian, penting bahwa kode respons server untuk kesalahan 404 sama persis dengan 404. Jalur ke file ditunjukkan menggunakan baris berikut:

    Dokumen Kesalahan 404 /404-untuk-saya.php Penulisan UlangCond %(HTTP_HOST) ^(+)\.site\.com$ Aturan Penulisan Ulang ^(.*) http://site.com/$1 RewriteCond %(HTTP_HOST) ^(+)\.site\.com$ RewriteCond %(HTTP_HOST) !=one.site.com Aturan Penulisan Ulang ^(.*) http://site.com/$1

    Semua aturan dieksekusi sesuai urutan kemunculannya di file .htaccess, dan aturan yang ditulis nanti akan dieksekusi nanti.

    Untuk situs yang tidak menggunakan server Apache, pengalihan 301 serupa dapat dikonfigurasi dengan mudah menggunakan PHP:

    Yang terbaik adalah mengonfigurasi semua pengalihan segera ke halaman akhir (tanpa pengalihan perantara, dalam satu langkah), ini meningkatkan persepsi mereka oleh mesin pencari dan pengguna.

    RewriteCond %(HTTP_USER_AGENT) (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|bada| jendela\ponsel)

    Aturan Penulisan Ulang (.*) http://mobile.site.ru/

    Tulis UlangCond %(HTTP_USER_AGENT) ! (accoona|ia_archiver|antabot|ask\ jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|skuter|w3c_validator |jigsaw|webalta|yahoofeedseeker |yahoo!\ slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer)

    Aturan Penulisan Ulang (.*) http://no-search.site.ru/

    Pengalihan dari www.site.ru/component/content/?view=featured ke www.site.ru/

    RewriteCond %(QUERY_STRING) ^view=featured$ Aturan Penulisan Ulang ^component/content/?$ /?

    RewriteCond %(QUERY_STRING) ^idc=4&marea=6$ Aturan Penulisan Ulang ^index\.php$ /? . - Sebuah titik menggantikan karakter arbitrer. - menunjukkan daftar karakter yang cocok dengan huruf a, b, atau c. [^abc] - daftar karakter yang tidak termasuk dalam rentang yang ditentukan. Cocok dengan karakter apa pun kecuali a, b, atau c. * - berarti karakter sebelumnya dapat diulang (0 kali atau lebih). * - perintah akan menemukan karakter berurutan dari kumpulan tertentu. [^abc]* - justru sebaliknya. .* - benar-benar menggantikan kumpulan karakter apa pun. ".*" - akan menemukan semua substring di antara tanda kutip. ^ - awal baris (jika digunakan di awal ekspresi). $ - menunjukkan akhir baris. \w - huruf, angka atau garis bawah _. \d - menggantikan nomor apa pun. \D - menggantikan karakter apa pun, tetapi bukan angka.

    - menggantikan nomor apa pun.

    - huruf apa pun dari a hingga z (seluruh rangkaian karakter Latin) dalam huruf kecil.
    - huruf apa saja dari A sampai Z dalam huruf UPPER.

    - huruf apa pun dari a sampai Z dalam hal apa pun.
    $ - karakter khusus akhir baris;
    ! - karakter negasi khusus;
    . - titik, menggantikan karakter apa pun, tetapi hanya satu;
    () - pengelompokan;
    \ adalah garis miring “escaping”; karakter berikutnya setelahnya dianggap sebagai karakter biasa, bukan karakter khusus.

    - sama.

    Aturan Penulisan Ulang(.*) $1?
    + - diulang dari 1 hingga 65536 kali.
    * - diulang dari 0 hingga 65536 kali.

    Tempatkan setelah: RewriteBase /

    Pengingat tentang simbol dan notasi yang digunakan Baris RewriteCond merupakan syarat untuk mengeksekusi aturan RewriteRule. Jika kondisi terpenuhi, maka pengalihan akan terpicu. Aturan dapat ditentukan menggunakan ekspresi reguler.
    Karakter khusus yang digunakan dalam aturan dan artinya.
    ^ - karakter khusus di awal baris;

    • Pengubah digunakan setelah karakter biasa, karakter khusus, atau grupnya dan memungkinkan Anda memperluas kemampuan templat untuk memicu aturan.

    Simbol tersebut diulang 0 atau 1 kali.

    Bendera yang menentukan tambahan pilihan aturan yang akan digunakan. Mereka dicantumkan dalam tanda kurung siku yang dipisahkan dengan koma, misalnya atau .

    NC - Bendera NoCase, yang menonaktifkan pemeriksaan huruf besar-kecil saat aturan dipicu.

    Redirect 301 - mengapa diperlukan? Dalam proses promosi situs web, mungkin timbul situasi ketika url halaman perlu diubah. Alasannya mungkin berbeda-beda: pindah ke domain baru, merekatkan halaman duplikat, atau bahkan, belum lagi, sanksi dari mesin pencari. Untuk mengubah url, digunakan pengalihan, yang disebut "301 Permanent Redirect".

    Apa itu pengalihan 301?

    Pengalihan 301 beroperasi secara berkelanjutan, mentransfer jus tautan, TIC situs, dll. dari halaman lama ke halaman baru. Selain itu, jika situs tersebut ada di direktori Yandex atau DMOZ, tentu saja halaman situs baru tersebut tidak akan ada di sana. Selain itu, pengalihan 301 ke situs lain digunakan, dan pengalihan dari satu versi situs ke versi lainnya. Secara khusus, ini menghilangkan masalah pengindeksan yang timbul karena duplikasi halaman situs.

    Menyingkirkan halaman duplikat juga disebut kanonikalisasi.

    Cara mengatur pengalihan 301

    Saat menggunakan beberapa CMS (sistem manajemen konten, atau mesin situs), pengalihan dapat dikonfigurasi menggunakan plugin khusus. Namun, praktik yang lebih umum adalah menyiapkan pengalihan 301 dengan membuat perubahan pada file .htacess.

    Beberapa contoh penggunaan pengalihan 301 Merekatkan mirror situs

    Untuk mesin pencari, nama situs dan www.situs.nama adalah situs yang berbeda. Salah satunya akan diindeks, yang kedua akan menjadi duplikat. Untuk mencegah hal ini terjadi, mereka melakukan apa yang disebut “perekatan” pada situs tersebut. Dari situs dengan "www", pengalihan ke situs tanpa "www" ditunjukkan. Ini dilakukan di file .htaccess menggunakan konstruksi berikut:

    Mesin Tulis Ulang Di RewriteCond %(HTTP_HOST) ^www.vash-sait\.ru$ Aturan Penulisan Ulang ^(.*)$ http://vash-sait.ru/$1

    Jika ini tidak dilakukan pada tahap awal, dan versi situs dengan "www" disertakan dalam indeks, ada baiknya melakukan pengalihan terbalik.

    Mesin Tulis Ulang Pada RewriteCond %(HTTP_HOST) ^vash-sait\.ru$ Aturan Penulisan Ulang ^(.*)$ http://www.vash-sait.ru/$1

    Redirect ke halaman dengan url berbeda

    Saat menggunakan link CNC, terkadang muncul situasi ketika url perlu diubah, tetapi halaman aslinya sudah ada di indeks. Agar tidak kehilangan posisi dan bobot saat mengganti tautan, ada baiknya mengatur pengalihan dari tautan asli ke tautan yang diubah.

    Mesin Tulis Ulang Pada Aturan Penulisan Ulang ^(.*)url.html$ http://vash-sait.ru/new-url.html

    Alihkan ke domain lain

    Dalam situasi di mana perubahan domain perlu dilakukan, hal ini dapat dilakukan tanpa kehilangan posisi dan bobot. Untuk melakukan ini, Anda perlu menginstal pengalihan 301 dari domain lama ke domain baru.

    Mesin Tulis Ulang di RewriteCond %(HTTP_HOST) ^www\.staryy-sait\.ru$ RewriteRule ^(.*)$ http://novyy-sait.ru/$1 RewriteCond %(HTTP_HOST) ^staryy-sait\.ru$ RewriteRule ^(.*)$ http://novyy-sait.ru/$1

    Mengarahkan alias ke domain situs utama

    Jika sebuah situs menggunakan beberapa domain (alias) yang terdaftar di zona domain berbeda, maka untuk menghindari duplikasi konten, Anda perlu menginstal 301 redirect ke domain utama.

    Mesin Tulis Ulang Di RewriteCond %(HTTP_HOST) ^vash-sait.com$ RewriteCond %(HTTP_HOST) ^www.vash-sait.com$ RewriteCond %(REQUEST_URI) !^/robots.* RewriteRule ^(.*)$ http:// vash-sait.ru/$1

    Menghapus ekstensi menggunakan pengalihan 301

    Mesin Tulis Ulang di RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

    Redirect dari index.php ke halaman beranda

    Dalam beberapa kasus, halaman utama situs tersedia di beberapa alamat secara bersamaan. Hal ini juga berdampak negatif pada promosi karena mengindikasikan adanya duplikasi konten. Anda dapat menghilangkannya dengan menggunakan konstruksi berikut:

    RewriteEngine Pada RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://vash-sait.ru/

    Halaman dengan garis miring pada URL-nya dan halaman tanpa karakter ini juga dapat dianggap duplikat. Kode berikut menyiapkan pengalihan dari halaman tanpa garis miring ke halaman dengan garis miring:

    Penulisan UlangCond %(REQUEST_FILENAME) !-d Penulisan UlangCond %(REQUEST_URI) ^(.+)/$ Aturan Penulisan Ulang ^(.+)/$ /$1

    Redirect untuk url dengan parameter

    Jika alamat sumber berisi parameter apa pun (misalnya, http://vash-sait.ru/articles.php?section=1. Parameter di sini adalah "section=1"), maka struktur pengalihan akan terlihat seperti ini:

    RewriteEngine Pada RewriteCond %(QUERY_STRING) section=1 RewriteRule ^index.php http://vash-sait.ru/articles.php?

    • Sergei Savenkov

      semacam ulasan "pendek"... seolah-olah kami sedang terburu-buru di suatu tempat