2010-09-07 30 views
6

Tôi muốn tạo một ứng dụng trong PHP thực hiện tính năng thư mục ảo.
Ví dụ: http://mydomain.com/user001 sẽ hiển thị nội dung của url http://mydomain.com/index.php?user=user001. Làm thế nào tôi có thể làm điều đó?Làm thế nào để tạo các thư mục ảo trong PHP?

Lưu ý:
Tôi đang sử dụng máy chủ Apache.

+0

Hãy xem ví dụ: [Silex] (http://silex.sensiolabs.org/) hoặc [Thành phần định tuyến Symfony] (http://symfony.com/doc/current/components/routing/introduction.html). Tốt hơn để sử dụng các thành phần được chứng minh tốt hơn so với việc cuộn các công cụ của riêng bạn. – nietonfir

Trả lời

5

Cách truyền thống để thực hiện là mod_rewrite.

+0

Nếu tôi muốn làm điều đó cho một ứng dụng viết blog thì tôi phải làm mod_rewrite cho mỗi mục nhập. Ví dụ: Mỗi khi tôi tạo một câu hỏi trong stackoverflow.com, nó sẽ tự động tạo một thư mục ảo cho câu hỏi đó. – chanchal1987

+0

không, bạn sẽ thiết lập một regex trong quy tắc viết lại của mình để khớp với bất kỳ mục nhập nào. – GrandmasterB

+0

@GrandmasterB: OK Cảm ơn ... – chanchal1987

2

Vui lòng đọc this friendly article regarding rewrite.

Tiếp theo, cố gắng tìm một cách đơn giản trong PHP để phân tích cú pháp biến $ _SERVER ['REQUEST_URI'] này.

Sau khi thực hiện điều đó, bạn có tên của thư mục và bạn có thể lấy dữ liệu của nó từ DB.

0

Chặn yêu cầu HTTP bằng phần tử 'REQUEST_URI' của $ _SERVER. Điều này trả về (tôi tin) chỉ trang được yêu cầu, không phải toàn bộ URI/URL - thông tin thêm here. Khi bạn đã nắm lấy yêu cầu trang, hãy thay thế địa chỉ của tệp thực sự cần thiết. Ví dụ, người dùng thân thiện www.somewebsite.com/page01 trở thành một yêu cầu cho còn phải nhàm chán-sounding www.somewebsite.com?page01.php. Phương pháp này sẽ không tạo ra một thư mục ảo, như vậy, nhưng nên làm việc được. Tôi đã sử dụng một phương pháp tương tự trên IT website của riêng mình, trong đó mỗi trang được tải qua index.php, cho phép tệp đó giữ nhật ký khách truy cập trong thời gian thực (trang web có Webalizer, chạy trong một ngày hoặc lâu hơn).

Viết lại tên tệp có thể hoạt động, mặc dù không phải là sở thích cá nhân của tôi. Việc sử dụng PHP để thực hiện một URI/URL-swap có thể sẽ mang lại lợi ích của việc giảm nhu cầu máy chủ, do yêu cầu thời gian đọc/ghi đĩa ít hơn so với ghi đè tên tập tin.

Tôi hy vọng điều đó sẽ hữu ích.

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