2012-04-13 34 views
6

Tôi đang cố gắng tìm ra cách chuyển hướng 301 trong tệp htaccess của mình để chuyển hướng một số tệp sang miền mới. Đây là những gì tôi cần phải biết làm thế nào để làm:Chuyển hướng 301 từ URL có chuỗi truy vấn sang miền mới với chuỗi truy vấn khác

URL OLD: http://www.example.com/index.php?page=news&id=2366

URL MỚI: http://www.example2.com/news.php?name=23546

Các trang đổi hướng không cần phải được tự động tạo ra. Tôi có thể mã hóa các trang mà tôi cần chuyển hướng trong tệp htaccess, tôi không biết định dạng để sử dụng vì tôi đã đọc rằng chuyển hướng 301 "chuẩn" sẽ không hoạt động với chuỗi truy vấn.

Về cơ bản đây là những gì tôi muốn làm, nhưng từ nghiên cứu của tôi cho đến nay nó không có vẻ như nó có thể được thực hiện theo cách này.

redirect 301 /index.php?page=news&id=2366 http://www.example2.com/news.php?name=23546 

Trả lời

18

Bạn có thể sử dụng một quy tắc viết lại với điều kiện đối sánh chuỗi truy vấn, chẳng hạn như:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/index.php$ 
RewriteCond %{QUERY_STRING} ^page=news&id=2366$ 
RewriteRule ^(.*)$ http://www.example2.com/news.php?name=23546 [R=301,L] 

Thanh toán this blog page để biết thêm thông tin về cách làm việc này.

+0

Tuyệt vời. Cảm ơn bạn đã giúp đỡ! –

+0

Tôi đã có cùng một vấn đề - Tôi tò mò tại sao chuyển hướng đơn giản 301 ... không hoạt động như có vẻ như nó nên theo tất cả các googling của tôi. – GDP

0

Tôi gặp vấn đề tương tự, nhưng vẫn phức tạp hơn, vì tôi cần loại bỏ các thông số khác.

Như thế này: my-old-page.php?a=1&b=2&c=3

tôi cần phải sử dụng một trong những chuỗi và loại bỏ những người khác, nhưng giải pháp mà chỉ làm việc nếu tôi muốn sử dụng tham số cuối cùng (c = 3). Nếu tôi muốn sử dụng bất kỳ khác (a = 1 hoặc b = 2) nó chạy đến một 404. Sau khi gặp khó khăn hơn và tìm kiếm, tôi tìm thấy một câu trả lời:

RewriteCond %{QUERY_STRING} ^.* ?b=2.* ?$ (without space after the *) 

RewriteRule (.*) http://www.my-webpage.php/new-location-2? [R=301,L] 

Giải pháp là để thêm ".*?" trước và sau khi để sử dụng.

Tôi không biết đây có phải là giải pháp tốt nhất hay không nhưng nó hoạt động.

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