2012-07-03 39 views
5

Tôi là nhà phát triển php và hiện tôi đang phát triển hệ thống CMS/blog. tôi muốn thêm một hệ thống permalink như WordPress. tôi rất tò mò về cách thức phân tích cú pháp liên kết của WordPress. Ví dụ, làm thế nào để có được dữ liệu như idpost name từ:Hệ thống permalink WordPress hoạt động như thế nào?

example.com/id/123/post/example/ 

Nói tóm lại, tôi muốn có một hệ thống để có được idpost name từ url. Tôi muốn cho phép người dùng thay đổi cấu trúc permalink như WordPress sử dụng thẻ như:

id/%postid%/post/%postname%/ 

Làm thế nào để có được dữ liệu trong các biến như $id$post_name nơi các giá trị sẽ 123example? Làm ơn giúp tôi. Cảm ơn trước.

Trả lời

0

Điều này phụ thuộc vào phần mềm máy chủ bạn đang sử dụng, nhưng nếu bạn lập kế hoạch sử dụng tập lệnh của mình trên Apache, thường sử dụng tên là mod_rewrite và cụ thể là tệp .htaccess.

Tôi khuyên bạn nên bắt đầu bằng cách đọc hướng dẫn về chủ đề này. As usual, Google is your friend.

5

Mô-đun apache thường có sẵn mod_rewrite có thể giúp bạn thực hiện việc này. Những gì bạn làm là viết các quy tắc viết lại bên trong một tệp tin .htaccess và thông qua việc viết lại, các cấu trúc ưa thích có thể giống như một hệ thống tệp được gửi tới tệp PHP dưới dạng các tham số $ _GET.

Ví dụ, nếu bạn muốn thay thế một cái gì đó như: ?reactor=13 vào /reactor/13/

Viết viết lại quy tắc này trong tập tin .htaccess:

RewriteEngine on 
RewriteRule reactor/([0-9]+)/$ index.php?id=$1 

Bây giờ, nếu thay vì index.php bạn kéo lên/reactor/13 /, tệp index.php của bạn sẽ thấy điều này trong $ _GET:

Array 
(
    [id] => 13 
) 

Bây giờ, đối với mã HTML, bạn có thể tạo URL thủ công nd tuân theo cấu trúc suy nghĩ của bạn.

Các quy tắc viết lại này có thể gây nhầm lẫn, nhưng chúng tuân theo mẫu regex hợp lý.

WordPress có cách tiếp cận mạnh mẽ hơn chèn các tệp .htaccess chỉnh sửa này vào nơi chúng gửi mọi thứ tới WP và sau đó WP giải quyết/định tuyến phần còn lại thông qua các quy tắc nội bộ.

+0

Nguồn trong nguồn WP xử lý liên kết ở đâu? Tôi chắc chắn rằng bạn đã đúng (các quy tắc mod_rewrite được tạo ra rất đơn giản/chung chung), nhưng nếu tôi có thể thấy nơi điều này được cho là xảy ra, nó sẽ giúp tôi chẩn đoán một vấn đề lạ mà tôi đang gặp phải. – iX3

+1

WP thực sự là quá phức tạp hoặc trừu tượng để trỏ đến một nơi duy nhất. Bạn có thể thấy điều này bằng cách xem https://github.com/WordPress/WordPress/search?q=permalink_structure&source=cc – pp19dd

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