Redirect .htaccess: redirect ke domain lain dan redirect ke halaman lain

  1. Redirect .htaccess: pengalihan permanen, 301
  2. Cara mengatur pengalihan ke www (atau tanpa www)
  3. Cara membuat .htaccess
  4. File .htaccess tidak berfungsi
  5. Apakah ada analog .htaccess di nginx?
  6. Penerbit
  7. x64 (alias andi)

Minggu yang indah!

Sangat sering di forum Anda dapat menemukan pertanyaan tentang .htaccess - file konfigurasi server web Apache. Batu sandungan utama adalah bahwa pengembangan tidak memiliki tugas konfigurasi yang mudah bagi pengguna akhir (distribusi tidak termasuk shell untuk instalasi visual menggunakan kotak centang, daftar drop-down, dll.), Tetapi administrator server mengatasi tugas ini dengan luar biasa, karena konten dengan "mana" (dari tim Linux - man - tutorial cepat dari pengembang, atau dalam hal ini dari profesional ke profesional).

Dalam kebanyakan kasus, manipulasi sederhana diperlukan: pengalihan tanpa syarat ke situs lain, atau pengalihan dari satu tempat ke tempat lain (misalnya, ketika URL bagian telah berubah). Dan setiap orang mulai percaya bahwa pasti tidak ada masalah di mana pun, dan bahkan tidak berguna untuk mencari solusi di Internet dan mencari di forum. Mari kita lihat apa sebenarnya masalah ini.

Mari kita lihat apa sebenarnya masalah ini

Redirect .htaccess: pengalihan permanen, 301

Benda ini memiliki nama yang berbeda. Neponyatki mungkin dapat menyebabkan angka itu - mengapa 301? Intinya terletak pada protokol HTTP itu sendiri, yang merespons permintaan klien dengan kode status tertentu. Kode 404 Tidak Ditemukan diketahui oleh hampir semua orang. 200 kode OK hampir tidak dikenal, tetapi itu berarti semuanya sudah beres dan dokumen akan ditampilkan di browser. Tetapi kode 301 Moved Permanently berarti dokumen itu akhirnya pindah ke alamat baru. Inilah yang sering disebut pengalihan, meskipun kumpulan respons total ditetapkan sebagai - 3xx: Pengalihan .

Apache memiliki beberapa opsi untuk pengalihan. Modul mod_rewrite menyediakan mekanisme yang sangat baik untuk bekerja dengan arahan ulang, dan di masa depan saya akan menggunakannya dalam contoh. Modul mod_alias juga memiliki arahan untuk pengalihan dari alamat tertentu atau dari alamat yang cocok dengan ekspresi reguler:
Redirect permanen / http://newsite.ru/
RedirectMatch permanen. * Http://newsite.ru/
Tetapi mod_rewrite memiliki opsi tambahan untuk pengalihan, jadi yang terbaik adalah menggunakan (IMHO).

Secara umum, untuk pengalihan eksternal tanpa syarat (sebut saja pengguna), di mana peramban secara otomatis mengalihkan ke halaman lain, biasanya tanpa terasa bagi pengguna (bilah alamat berubah), Anda dapat memasukkan kode tersebut di .htaccess:
Tulis Ulang Hidup
RewriteRule. * Http://newsite.ru/ [L, R = permanen]
Di sini, baris pertama termasuk mekanisme modul mod_rewrite , yang diizinkan untuk melakukan apa saja dengan alamat. Mari kita sebut konversi URL ini dengan ketentuan on the fly. Baris kedua secara langsung mendefinisikan aturan untuk konversi, dalam contoh di atas, semua permintaan akan dialihkan ke http://newsite.ru/. Bendera ditempatkan dalam tanda kurung siku: aturan L - last (Last), tipe R - redirect (Redirect), diindikasikan sebagai kode R =, di mana kode adalah penandaan alfabet atau angka (permanen atau 302).

Sebenarnya, mod_rewrite adalah hal yang sangat berguna, karena karena inilah banyak mesin yang secara aktif menggunakan apa yang disebut CNC (Human URL Understandable). Jika Anda tidak terbiasa dengan istilah ini, saya akan menjelaskan dengan sebuah contoh. Artikel tentang mesin gratis untuk situs tersebut memiliki alamat: https://a-panov.ru/2014/11/free-cms/

Melihat URL ini, segera jelas bahwa artikel itu diterbitkan pada November 2014. Dengan menghapus judul dengan garis miring - https://a-panov.ru/2014/11/ - kami akan menerima daftar semua publikasi untuk November. Alamat normal, ketik:

https://a-panov.ru/?p=389

tidak ada keramahan khusus. Melihat alamat seperti itu, Anda tidak bisa mengatakan tentang halaman yang dipimpinnya, sama sekali tidak ada.

Metode ini bagus ketika Anda tidak peduli halaman situs mana yang akan ditautkan. Tetapi jika Anda pindah ke domain lain, disarankan untuk mengalihkan semua permintaan sambil mempertahankan alamat. Untuk melakukan ini, gunakan kode berikut:
RewriteRule ^. * $ Http://newsite.ru/$0 [QSA, L, R = permanen]
Bendera QSA baru juga akan menyimpan parameter yang dapat ditemukan di alamat setelah tanda tanya. Dalam contoh yang sudah akrab:

https://a-panov.ru/?p=389

jika saya menempatkan kode di .htaccess di atas, maka akan ada pengalihan ke alamat http://newsite.ru/?p=389 yang tanpa tanda ini tidak akan ada.

Selanjutnya, saya akan menghilangkan direktif inklusi transformasi:
Tulis Ulang Hidup
ingat saja: jika Anda menggunakan mekanisme mod_rewrite, maka semua kondisi / konversi harus dilakukan setelah arahan ini. Untuk menonaktifkan baris berikut digunakan:
Menulis Ulang Mesin Mati
oleh karena itu, untuk setiap aturan tidak perlu terus-menerus "menghidupkan" transformasi - itu mulai dilakukan secara otomatis, segera setelah arahan pertama.

Cara mengatur pengalihan ke www (atau tanpa www)

Pengalihan tersebut diperlukan untuk kasus-kasus ketika situs tersedia pada opsi nsite.ru dan www.nsite.ru, dalam hal ini, mesin pencari menganggapnya duplikat dan dapat memilih salah satu opsi sebagai cermin utama , atau dalam pencarian akan ada opsi dari kedua domain. Secara umum, ini adalah faktor negatif ketika peringkat situs.

Opsi lebih mudah untuk satu domain. Pengalihan dilakukan dari subdomain www.site.ru ke site.ru:
RewriteCond% {HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule. * Http://nsite.ru/$0 [QSA, L, R = permanen]
Di sinilah direktif RewriteCond yang baru muncul, yang menetapkan kondisi di mana arahan ulang harus berfungsi - aturan RewriteRule . Syaratnya , dalam hal ini, nama domain yang sesuai dengan www.nsite.ru (dalam ekspresi reguler, simbol titik berarti "karakter apa saja", sehingga disarankan untuk melindunginya dengan backslash).

Pengalihan terbalik juga sangat sederhana:
RewriteCond% {HTTP_HOST} ^ nsite \ .ru $
RewriteRule. * Http://www.nsite.ru/$0 [QSA, L, R = permanen]
Kedua opsi berfungsi, tetapi mereka memiliki minus kecil - untuk setiap konfigurasi baru perlu mengganti domain nsite.ru dengan milik Anda. Apakah mungkin membuat opsi unik? Mudah!

Redirect dari subdomain www apa pun:
RewriteCond% {HTTP_HOST} ^ www \. (. *) $
RewriteRule. * Http: //% 1 / $ 0 [QSA, L, R = permanen]

Redirect ke subdomain dengan www:
RewriteCond% {HTTP_HOST}! ^ Www \.
RewriteRule. * Http: //www.% {HTTP_HOST} / $ 0 [QSA, L, R = permanen]

% {HTTP_HOST} - domain saat ini

Cara membuat .htaccess

Pertanyaan semacam itu juga muncul. Masalahnya adalah bahwa Explorer standar (aplikasi di Windows, yang bertanggung jawab untuk antarmuka grafis) tidak memungkinkan Anda untuk membuat file mulai dengan titik (membuat file atau folder dengan mengklik kanan pada desktop atau di jendela dan memilih tindakan yang diinginkan dari daftar Buat ). Tapi ada jalan keluar: buka perekam Notepad standar, pilih File → Save as ... di menu, dan tentukan .htaccess sebagai nama file yang disimpan - setelah itu akan dibuat.

File .htaccess tidak berfungsi

Ada beberapa kasus ketika arahan dari file tidak berfungsi. Ini biasanya disebabkan oleh fakta bahwa dukungan .htaccess dinonaktifkan dalam konfigurasi Apache, yang bertanggung jawab atas arahan:
AllowOverride tidak ada

Ini biasanya dilakukan untuk meningkatkan kecepatan - dalam hal ini, server web tidak mencari dan mengurai .htaccess.

Mungkin juga bahwa Apache tidak digunakan di server, misalnya, IIS adalah "tamu" utama pada hosting Windows. Untuk klarifikasi, hubungi dukungan hoster Anda.

Apakah ada analog .htaccess di nginx?

Pertanyaan lain yang cukup sering. Di server web ini, ini tidak mungkin. Namun, ini biasanya tidak diperlukan. Faktanya adalah bahwa nginx biasanya diinstal sebagai frondend, yaitu, ia menerima dan memproses semua permintaan yang dilakukan sendiri atau dialihkan ke backend, yang dapat dilakukan oleh Apache, yang dapat dikonfigurasi lebih lanjut menggunakan .htaccess.

Penerbit

tidak online 1 hari

x64 (alias andi)

Komentar: 2834 Publikasi: 394 Pendaftaran: 02-04-2009

Htaccess di nginx?
Neponyatki mungkin dapat menyebabkan angka itu - mengapa 301?
Ru/?
Ru/?
Ru/?
Apakah mungkin membuat opsi unik?
Htaccess di nginx?

Новости