Saya ingin mengalihkan www.example.com
ke example.com
. Kode htaccess berikut membuat ini terjadi:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Tapi, apakah ada cara untuk melakukan ini secara umum tanpa hardcoding nama domain?
apache
mod-rewrite
url-rewriting
deepwell
sumber
sumber
Jawaban:
Sama seperti Michael kecuali yang ini berfungsi: P
sumber
RewriteEngine On
prekursor untuk membuatnya berfungsi.http://www.domain.com/
kehttp://domain.com//
. Anda harus menambahkan/
keRewruteRule
. Ini bekerja untuk sayaRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
dengan garis miring ganda. Jadi saya lakukanRewriteRule ^(.*)$ http://%1$1 [R=301,L]
dan tampaknya bekerja sejauh iniTetapi jika kita perlu melakukan ini untuk http dan https yang terpisah:
sumber
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
Anda tidak harus mendapatkan garis miring ekstra. (Hanya untuk dicatat, jika Anda melakukan pengalihan ini di konfigurasi server maka Anda mungkin tidak boleh menggunakan mod_rewrite untuk memulai dengan ... mod_alias sederhanaRedirect
dalam wadah vhost yang sesuai akan lebih efisien dan lebih rentan kesalahan.)Alihkan non-www ke www (keduanya: http + https)
sumber
RewriteEngine On
danRewriteBase /
, tetapi jika tidak berfungsi dengan baik.Jika Anda ingin melakukan ini di file httpd.conf, Anda dapat melakukannya tanpa mod_rewrite (dan tampaknya lebih baik untuk kinerja).
Saya mendapatkan jawaban itu di sini: /server/120488/redirect-url-within-apache-virtualhost/120507#120507
sumber
Berikut adalah aturan untuk mengarahkan URL www ke no-www:
Berikut adalah aturan untuk mengalihkan URL no-www ke www:
Perhatikan bahwa saya menggunakan
NE
flag untuk mencegah apache keluar dari string kueri. Tanpa tanda ini, apache akan mengubah URL yang dimintahttp://www.example.com/?foo%20bar
menjadihttp://www.example.com/?foo%2250bar
sumber
The
RewriteCond
menangkap segala sesuatu diHTTP_HOST
variabel setelah ituwww.
dan menyimpannya di%1
.The
RewriteRule
menangkap URL tanpa terkemuka/
dan menyimpannya di$1
.sumber
sans leading "/"
- Dalam.htaccess
(seperti yang dinyatakan dalam pertanyaan) tidak ada arahan/
, sehingga polanya tidak pernah cocok dan arahan tidak pernah terjadi. (Hanya ada garis miring utama dalam konteks server atau virtualhost .) Juga, jika Anda memiliki arahan mod_rewrite setelah ini, maka Anda akan memerlukanL
benderanya.Coba ini:
Jika host dimulai dengan www, kami menempelkan seluruh host pada awal URL, lalu melepas "www."
sumber
.htaccess
. Dalam konteks direktori (.htaccess
) Anda harus mengubah yang pertamaRewriteRule
dibaca:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
(memerlukan Apache 2.2.12+). Perhatikan penambahan tanda garis miring danDPI
(Buang Info Path) - untuk mencegah bagian dari URL-path yang tampaknya digandakan (yang sebenarnya "path-info") seperti yang dinyatakan dalam komentar sebelumnya. Namun, ada arahan yang lebih sederhana - sebagaimana dibahas dalam jawaban lain.Handler WWW Lengkap, http / https
Saya tidak melihat jawaban yang lengkap. Saya menggunakan ini untuk menangani inklusi WWW.
Tolong beri tahu saya cara kerjanya atau jika saya meninggalkan celah.
sumber
www
ke non-www
. Anda memaksakan dimasukkannyawww
.Mungkin ada banyak informasi yang salah di luar sana tentang pengalihan htaccess, saya menemukan. Pertama, pastikan situs Anda berjalan di Unix menggunakan Apache dan bukan pada host Windows jika Anda mengharapkan kode ini berfungsi.
(Namun, pastikan tidak ada spasi baris di antara setiap baris teks; Saya telah menambahkan spasi ekstra di antara baris-baris tersebut sehingga tidak masalah di jendela ini.)
Ini adalah satu cuplikan kode yang dapat digunakan untuk mengarahkan versi www situs Anda ke versi http: //. Ada kode serupa lainnya yang dapat digunakan juga.
sumber
Untuk subfolder
sumber
Bagi mereka yang perlu dapat mengakses seluruh situs TANPA awalan 'www'.
Mare yakin Anda menambahkan ini ke file berikut
sumber
protossl
variabel lingkungan (ini bukan variabel standar / server). Ini akan selalu kosong, jadi akan selalu dialihkan kehttp
. (Gagasan di balik pengaturanprotossl
sebelumnya dalam kode adalah untuk ketika Anda ingin mempertahankan protokol saat mengarahkan. Namun, hari ini Anda mungkin harus mengarahkan ulang kehttps
setiap saat.)Menggunakan .htaccess untuk Redirect ke www atau non-www:
Cukup masukkan baris kode berikut ke dalam file root .htaccess utama Anda. Dalam kedua kasus, cukup ganti domain.com ke nama host Anda sendiri.
Redirect ke www
Redirect ke non-www
ubah DOT ke =>. !!!
sumber
Saya menggunakan aturan di atas untuk menemukan www tanpa www dan berfungsi dengan baik untuk beranda, namun pada halaman internal mereka meneruskan ke /index.php
Saya menemukan aturan lain ini dalam file .htaccess saya yang menyebabkan ini tetapi tidak yakin apa yang harus dilakukan. Setiap saran akan sangat bagus:
sumber
www ke non www dengan https
sumber
Jika Anda ingin menghapus
www
keduanyahttp
danhttps
, gunakan yang berikut ini:Ini mengalihkan Non ssl
untuk
Dan SSL
untuk
pada apache
2.4.*
Anda dapat melakukannya dengan menggunakanRedirect
denganif
direktif,sumber
gunakan: Javascript / jQuery
Atau .htaccess:
dan Metode PHP:
Ajax
sumber
Satu-satunya cara saya membuatnya bekerja ...
sumber
Jika Anda memaksa www. di url atau memaksa ssl prototcol, kemudian coba gunakan kemungkinan variasi dalam file htaccess, seperti:
sumber
RewriteCond %{SERVER_PORT} 80
saya menyarankan untuk menggunakan pemeriksaan yang lebih universal:RewriteCond %{HTTPS} off
Jawaban yang dipilih dan banyak solusi lain di sini menjatuhkan bagian url setelah /, jadi pada dasarnya selalu diarahkan ke domain utama, setidaknya untuk saya .. Jadi saya menambahkan sampel yang bekerja dengan menghormati jalur penuh setelah slash ..
sumber
Pendekatan alternatif jika kustomisasi .htaccess bukanlah opsi yang ideal:
Saya telah membuat server pengalihan sederhana untuk penggunaan umum. Cukup tambahkan catatan A atau CNAME:
Info lebih lanjut: https://simpleredirect.net
sumber
Saya tidak yakin mengapa Anda ingin menghapus www. Tetapi versi sebaliknya adalah:
Dan keuntungan dari skrip ini adalah: jika Anda memiliki sesuatu seperti test.whattimein.com atau lainnya (lingkungan untuk pengembangan / pengujian), ia tidak akan mengarahkan Anda ke lingkungan asli.
sumber
Ini diperbarui untuk berfungsi di Apache 2.4:
Satu-satunya perubahan vs Michael adalah menghapus
[NC]
, yang menghasilkan kesalahan "AH00665":sumber
RewriteCond %{REQUEST_FILENAME} !-f [NC]
). TheNC
flag membuat sedikit perbedaan di atas, namun, alasanNC
bendera harus digunakan di sini adalah untuk menangkap sebagian kecil dari lalu lintas bot yang (benar) mengirimkan nama host huruf besar.Ditambahkan jika localhost, abaikan pengalihan (untuk tujuan pengembangan di lingkungan lokal). Jika bukan localhost DAN (bukan https ATAU ini www), arahkan ulang ke https dan non-www.
sumber
Hai, Anda dapat menggunakan aturan berikut pada file htaccess Anda:
sumber