2012-10-25 40 views
15

Tôi đã di chuyển thành công một trang web Wordpress sang Drupal. Thật không may trong Wordpress, URL nội dung là một cái gì đó như www.example.org/?p=123. Tên miền của tôi vẫn như cũ, nhưng tôi muốn chuyển hướng qua htaccess vì Drupal sẽ không cho phép URL là www.example.org/?p=123. Nói cách khác, nội dung không có cùng URL như trong Wordpress. Ví dụ, Drupal URL mới sẽ là một cái gì đó giống như www.example.org/content/MyNewPageCách chuyển hướng URL dựa trên chuỗi truy vấn?

Tôi cố gắng này trong tập tin .htaccess của tôi và nó không hoạt động

Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage 

Vì vậy, tôi đã cố gắng bên dưới, nhưng nó không hoạt động nữa.

Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage 

Cũng giống như một thử nghiệm, tôi đã thử bên dưới và hoạt động.

Redirect 301 http://www.example.org http://www.google.com 

Tôi đảm bảo rằng quy tắc Chuyển hướng của tôi nằm ở đầu danh sách trong .htaccess để nó sẽ được đánh giá trước tiên. Làm thế nào để sửa lỗi này?

Trả lời

29

không chuyển hướng hoặc RedirectMatch cho phép bạn chỉ định chuỗi truy vấn cho nguồn chuyển hướng. [Source]

Bạn phải sử dụng mod-rewrite cho chuyển hướng dựa trên chuỗi truy vấn:

RewriteCond %{QUERY_STRING} ^p=375$ 
RewriteRule (.*) http://www.example.org/content/MyNewPage? [R=301,L] 
+0

Rất tiếc, tôi đã bị chuyển hướng đến trang 404 không được tìm thấy và URL của tôi vẫn bị kẹt hiển thị http://www.example.org/?p=375. Tôi có thể xác nhận rằng "nội dung/MyNewPage" không tồn tại và hoạt động. Tôi cũng có thể xác nhận rằng RewriteRules của tôi đang hoạt động vì chúng hoạt động tốt trong Drupal. – user785179

+0

Xóa bộ nhớ cache của trình duyệt và thử lại, bộ nhớ cache của trình duyệt '301 Chuyển hướng vĩnh viễn' – undone

+0

Đề xuất tốt, nhưng bây giờ Firefox nói rằng nó đang chuyển hướng như một vòng lặp vô tận. "Firefox đã phát hiện ra rằng máy chủ đang chuyển hướng yêu cầu cho địa chỉ này theo cách sẽ không bao giờ hoàn thành". URL sẽ xuất hiện dưới dạng http://www.example.org/content/MyNewPage?p=375 – user785179

1

Bạn có thể xem xét sử dụng ModRewrite trong htaccess của bạn

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=345$ [NC] 
RewriteRule index.php content/MyNewPage [NC,L,R=301] 

</IfModule> 

Và bạn cũng có thể muốn vượt qua id trang cũ cho URL mới được ghép nối (hoặc có thể bằng QS?):

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=(.*)$ [NC] 
RewriteRule index.php content/MyNewPage-%1 [NC,L,R=301] 

</IfModule> 
+0

Tôi đã thử phương pháp của bạn nhưng tôi bị đưa đến trang lỗi 404. – user785179

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