2011-12-09 27 views
12

Tôi đang chuyển hướng miền này sang tên miền khác, nhưng tôi muốn giữ nguyên đường dẫn trong chuyển hướng. Vì vậy, ví dụ: tôi muốn truy cập www.example.com/services/education/page.html, nhưng chuyển hướng của tôi sẽ đưa họ đến www.new-example.com/services/education/page.html. Tôi phải viết gì trong tệp .htaccess để bảo vệ đường dẫn "/services/education/page.html"?Cách chuyển hướng 301 toàn bộ miền trong khi vẫn giữ đường dẫn

Ngay bây giờ tôi có:

redirect 301 http://www.example.com/ http://www.new-example.com/ 

Nhưng tôi không chắc chắn nếu mà làm việc hay không (Không thể kiểm tra được nêu ra như tôi đang chờ đợi để biết chi tiết miền vv). Tôi chỉ muốn chắc chắn khi tôi đặt trang web trực tiếp. Đó là đúng hay tôi ra khỏi cơ sở?

Cảm ơn!

+0

Bạn vẫn có thể kiểm tra trước khi bạn nhận được chi tiết tên miền của mình với tên miền hiện tại, ví dụ: google.com hoặc thậm chí không tồn tại như tất cả những gì bạn muốn thấy là chuyển hướng 301 được ban hành trong mọi trường hợp bạn muốn trong khi vẫn giữ đường dẫn của mình. –

+1

Helicon có ứng dụng RegexTest cho phép bạn kiểm tra các mục nhập .htaccess. Nó thậm chí sẽ tạo ra một quy tắc cho bạn, dựa trên đầu vào/kiểm tra của bạn. – Aaron

Trả lời

22

này nên làm điều đó:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !new-example.com$ [NC] 
RewriteRule ^(.*)$ http://new-example.com/$1 [L,R=301] 
+0

tập tin .htaccess của tôi đã có mã này (Wordpress) trong đó: RewriteEngine On RewriteBase / RewriteRule^index \ .php $ - [L] RewriteCond% {REQUEST_FILENAME} -f RewriteCond % {REQUEST_FILENAME}! -d RewriteRule. /index.php [L] Tôi có cần 4 dòng mã bạn đã cung cấp cho tôi không? Hoặc tôi sẽ có một vấn đề đặt trong RewriteEngine Ngày hai lần (tương tự cho RewriteBase /) – jasonaburton

+0

bỏ qua hai dòng đầu tiên nếu chúng đã tồn tại trong .htaccess của bạn –

+0

Các chuyển hướng này không hoạt động. Mã duy nhất tôi có trong .htaccess của tôi được đăng trong bình luận của tôi ở trên. Có một lý do nó không hoạt động? – jasonaburton

5

thử thêm dòng sau vào .htaccess trong thư mục gốc của example.com miền của bạn

RewriteEngine On 
RewriteBase/

#for all requests to www.example.com 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ 
#redirect them to new-example 
RewriteRule (.*) http://www.new-example.com/$1 [R=301,L] 
4

lệnh ban đầu của bạn sử dụng các module mod_alias Apache, và nó sẽ hoạt động, mặc dù bạn có thể muốn cập nhật nó thành:

Redirect 301/http://www.new-example.com/ 

Xóa chính xác miền của miền hiện tại (cũ) nghĩa là tất cả các miền trỏ đến thư mục đó sẽ được gửi đến miền mới, làm cho tập lệnh một dòng đó mạnh mẽ hơn.

Các câu trả lời khác sử dụng mô-đun Apache mod_rewrite. Nếu bạn cũng đã cài đặt, đó là tốt để sử dụng, mặc dù nó là 4 + dòng mã so với một. Ngoài ra, mod_alias là một phần của gói "cơ sở", vì vậy phải có trên tất cả các máy chủ Apache, trong khi mod_rewrite là một phần mở rộng tùy chọn, do đó một số có thể không có.

+0

Hoạt động rất tốt. Điều này có vẻ như là tốt nhất của câu trả lời do không beeing phụ thuộc vào mod_rewrite. –

Các vấn đề liên quan