Làm thế nào để chuyển hướng root và chỉ root thông qua htaccess?


53

Tôi muốn chỉ chuyển hướng gốc của mình sang một url khác, nhưng duy trì tất cả các thư mục / phụ / nơi chúng thuộc về (và chuyển hướng)

thí dụ:

mysite.com/1 chuyển hướng đến một nơi nào đó mysite.com/admin mở một trang

tôi muốn mysite.com/ chuyển hướng đến mysecondsite.com và chỉ điều này với chuyển hướng 301 bằng htaccess

Câu trả lời:


75

Thử đi:

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

Nếu bạn không cần kiểm tra tên miền cũ (ví dụ: nếu thư mục nơi .htaccess của bạn được đặt chỉ được sử dụng bởi tên miền cũ), bạn có thể xóa dòng thứ hai.


1
Trong trường hợp của tôi, tôi cần chuyển hướng lưu lượng truy cập đến mysite.com/ nhưng không phải foo.mysite.com vì vậy phải thêm regex vào dòng 2: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]để đảm bảo trận đấu được dành cho máy chủ chính xác
jaygooby

Sẽ hiệu quả hơn khi kiểm tra đường dẫn URL trong RewriteRule mẫu (như trong câu trả lời của @ DaveForgac), thay vì sử dụng một điều kiện bổ sung để kiểm tra REQUEST_URIbiến máy chủ.
MrWhite

38

Nếu bạn có nghĩa là bạn chỉ muốn chuyển hướng "/" sang tên miền khác, điều này sẽ hoạt động:

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

Điều này chỉ phù hợp với gốc của tên miền mà không có gì sau nó vì vậy nó sẽ chỉ chuyển hướng tên miền mà không có tên tệp được chỉ định.


Một biến thể nhỏ làm việc cho tôi. Đã thêm vào cuối htaccess của tôi, sau khi tất cả các quy tắc khác được gọi, tôi chỉ muốn hiển thị trang chào mừng cho bất kỳ ai truy cập tên miền gốc của mình (không có bất kỳ tên miền phụ nào): RewriteCond% {HTTP_HOST}! ^ (Subomain1 | subomain2) \. Mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack

15

Điều này sẽ làm việc tốt:

RedirectMatch 301 ^/$ https://example.com/

2
Điều này sẽ thích hợp hơn (với các câu trả lời hiện có) nếu bạn chưa sử dụng mod_rewrite cho các chuyển hướng khác.
MrWhite

-3

Một giải pháp ngắn hơn:

Redirect 301 / http://mysecondsite.com/

12
Điều này sẽ KHÔNG làm những gì jardel muốn. Nó sẽ chuyển hướng TẤT CẢ các trang thay vì chỉ root.
sharoz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.