Mencoba untuk mendapatkan
www.example.com
untuk langsung ke
www.example.com/store
Saya telah mencoba beberapa bit kode dan tidak ada yang berhasil.
Apa yang saya coba:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.example\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
Apa yang saya lakukan salah?
.htaccess
mod-rewrite
redirect
Willi Mentzel
sumber
sumber
Saya terkejut bahwa tidak ada yang menyebutkan ini:
Pada dasarnya, ini mengarahkan kembali root dan hanya URL root. Jawabannya berasal dari tautan ini
sumber
RedirectMatch 301 ^/$ /store/
Coba ini:
Jika Anda ingin arahan ulang eksternal (yang menyebabkan peramban yang berkunjung menunjukkan URL yang dialihkan), atur
R
tanda juga di sana:sumber
www.example.com
sebagai URI setelah pengalihan? Jika tidak, bagaimana hal itu diubah untuk melakukannya?RewriteCond
dan yang pertamaRewriteRule
?/aboveSubDir
oleh browser atau server.Inilah yang saya gunakan untuk mengarahkan ulang ke subdirektori. Ini tidak terlihat dan masih memungkinkan melalui permintaan yang cocok dengan file yang ada atau apa pun.
Ganti situs.com dan tundukkan dengan nilai-nilai Anda.
sumber
Untuk mengatur pengalihan yang tidak terlihat dari root ke subfolder, Anda dapat menggunakan RewriteRule berikut di /root/.htaccess:
Aturan di atas secara internal akan mengarahkan browser dari:
untuk
Dan
untuk
sementara browser akan tetap di folder root.
sumber
Alternatif lain jika Anda ingin menulis ulang URL dan menyembunyikan URL aslinya:
Dengan ini, jika Anda misalnya mengetik
http://www.example.com/product.php?id=4
, itu akan membuka file secara transparan dihttp://www.example.com/store/product.php?id=4
tetapi tanpa menunjukkan kepada pengguna url lengkap.sumber
QSA
(tambahkan string kueri) ke[L]
([L, QSA]
) jika Anda ingin string kueri terbawa ke url yang ditulis ulang.Ini sepertinya solusi paling sederhana:
Saya mendapatkan loop pengalihan dengan beberapa solusi lain.
sumber
Saya tidak mengerti pertanyaan Anda ...
Jika Anda ingin mengalihkan setiap permintaan ke subfolder:
Jika Anda ingin mengarahkan ulang ke subfolder yang memiliki nama domain
sumber
([^\.]+\.[^\.]+)$
untuk memesan domain sebagai nama subfolder.Saya telah menemukan bahwa untuk menghindari redirection melingkar, penting untuk membatasi ruang lingkup redirection ke direktori root. Saya akan menggunakan:
sumber
Sebagian besar solusi di atas benar tetapi mereka semua kehilangan transparansi pengalihan.
Dalam kasus saya, ketika mengunjungi www.example.com saya ingin diarahkan ke subdirektori / toko tetapi tanpa memperbarui URL ke www.example.com/store . (yang saya inginkan adalah mendapatkan kode halaman dari direktori itu). Jika demikian, solusi di bawah ini berfungsi dengan baik.
sumber: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
sumber
RewriteRule ^(.*)$ http://otherpage.com/subfolder/$1 [L]
tetapi memperbarui URLexample
danstore
.example.com
danotherpage.com
domain. Ketika saya mengunjungi,example.com
saya ingin agar kontennyaotherpage.com/subfolder
ditampilkan, tanpa memperbarui URLSeseorang dapat menggunakan Pengalihan juga untuk tujuan ini
Atau Alias untuk pemetaan
Sunting: mod_alias hanya berlaku di httpd.conf.
Refrences
sumber
Sebelumnya saya menggunakan kode berikut yang berfungsi dengan benar untuk mengarahkan ulang URL root dari masing-masing domain / subdomain saya ke subdirektori korespondensi mereka yang dinamai persis sebagai sub / domain itu sendiri seperti di bawah ini:
Namun ketika saya ingin menambahkan subs atau domain lain maka perlu ditambahkan dalam kode di atas. Seharusnya lebih mudah untuk menyederhanakannya agar berfungsi seperti wildcard (*) seperti di bawah ini:
Jadi setiap kali subdomain / domain lain ditambahkan selama nama subdomain memiliki awalan sub (seperti: sub3.domain1.com, sub1.domain3.com dll.) Kode akan tetap valid.
sumber
Saya pikir masalah utama dengan kode yang Anda posting adalah:
baris pertama cocok dengan host yang diawali dengan sample.com secara ketat, jadi www.sample.com tidak cocok.
baris kedua menginginkan setidaknya satu karakter, diikuti oleh www.sample.com yang juga tidak cocok (mengapa Anda lolos dari w pertama?)
tidak ada aturan yang disertakan yang mengarahkan ulang ke url yang Anda tentukan dalam sasaran Anda (plus, sampel salah eja sebagai samle, tapi itu tidak relevan).
Untuk referensi, inilah kode yang saat ini Anda miliki:
sumber
Sedikit googling, beri saya hasil ini:
Atau coba ini:
Saya belum melakukan banyak pengalihan dalam file .htaccess, jadi saya tidak yakin apakah ini akan berhasil.
sumber
Dua cara keluar dari solusi yang mungkin untuk mencapai ini adalah: 1. Buat
.htaccess
file di folder root seperti di bawah (cukup ganti example.com dan my_dir dengan nilai yang sesuai):Gunakan RedirectMatch untuk hanya mengarahkan ulang URL root “/” ke folder atau URL lain,
RedirectMatch ^ / $ http://www.example.com/my_dir
sumber
coba gunakan baris berikut di htaccess
Catatan: Anda mungkin perlu memeriksa apa nama default.html
default.html adalah file yang memuat secara default di folder root.
RewriteEngine
Redirect /default.html http://example.com/store/
sumber
Anda cukup menambahkan kode ini ke file .htaccess Anda
sumber
Saya akan menjawab pertanyaan awal bukan dengan menunjukkan kemungkinan sintaks yang lain (ada banyak di antara jawaban lainnya) tetapi dengan menunjukkan sesuatu yang pernah saya harus tangani, itu membuat saya perlu waktu untuk memikirkan:
Ada kemungkinan bahwa% {HTTP_HOST} tidak diisi dengan benar, atau tidak sama sekali. Meskipun, saya hanya melihat itu terjadi hanya pada satu mesin di host bersama, dengan beberapa apache 2.2 yang ditambal, kemungkinan masih ada.
sumber
Ini akan mencoba subdir jika file tidak ada di root. Membutuhkan ini karena saya memindahkan situs web .html dasar yang diharapkan untuk dijalankan pada tingkat root dan mendorongnya ke subdir. Hanya berfungsi jika semua file datar (tidak ada trik htaccess di subdir mungkin). Berguna untuk hal-hal yang ditautkan seperti file css dan js.
sumber