Bagaimana cara me-redirect root dan hanya me-root via htaccess?

53

Saya ingin mengarahkan ulang hanya root saya ke url lain, tetapi pertahankan semua / sub / direktori di mana mereka berada (dan redirect)

contoh:

mysite.com/1 mengalihkan ke suatu tempat mysite.com/admin membuka halaman

Saya ingin mysite.com/ untuk mengarahkan ulang ke mysecondsite.com dan hanya ini dengan 301 redirect menggunakan htaccess


sumber

Jawaban:

75

Coba ini:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

Jika Anda tidak perlu memeriksa domain lama (misalnya, jika direktori tempat .htaccess Anda hanya digunakan oleh domain lama), Anda dapat menghapus baris kedua.

Rodrigo Sieiro
sumber
1
Dalam kasus saya, saya perlu mengarahkan lalu lintas ke mysite.com/ tetapi tidak ke foo.mysite.com sehingga harus menambahkan regex ke baris 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]untuk memastikan pertandingan itu untuk host yang tepat
jaygooby
Lebih efisien untuk memeriksa jalur URL dalam RewriteRule pola (seperti pada jawaban @ DaveForgac), daripada menggunakan kondisi tambahan untuk memeriksa REQUEST_URIvariabel server.
MrWhite
38

Jika Anda bermaksud hanya mengarahkan "/" ke domain lain, ini akan berfungsi:

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

Ini hanya cocok dengan root domain tanpa apa-apa setelahnya sehingga hanya akan mengarahkan ulang nama domain tanpa nama file yang ditentukan.

Dave Forgac
sumber
Variasi sedikit bekerja untuk saya. Ditambahkan ke bagian bawah htaccess saya, setelah semua aturan lain diterapkan, saya hanya ingin memberikan halaman selamat datang kepada siapa pun yang mengunjungi domain root saya (tanpa subdomain): RewriteCond% {HTTP_HOST}! ^ (Subdomain1 | subdomain2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack
15

Ini seharusnya bekerja dengan baik:

RedirectMatch 301 ^/$ https://example.com/
stefanbc
sumber
2
Ini lebih disukai (untuk jawaban yang ada) jika Anda belum menggunakan mod_rewrite untuk pengalihan lainnya.
MrWhite
-3

Solusi yang lebih pendek:

Redirect 301 / http://mysecondsite.com/
minipark
sumber
12
Ini TIDAK akan melakukan apa yang diinginkan jardel. Ini akan mengarahkan SEMUA halaman daripada hanya root.
sharoz