2008-12-02 37 views
16

Tôi có một thư mục bên ngoài webroot được sử dụng để lưu trữ hình ảnh được tải lên từ một hệ thống quản trị riêng biệt. Hình ảnh được lưu trữ trong định dạng này:Làm thế nào để sử dụng apache mod_rewrite và bí danh cùng một lúc?

filepath/writable/images/00/00/23/65/filename-236581.jpg 

(nơi webroot là filepath/html)

... ví dụ. Ở đây, 236 là ID của hình ảnh trong cơ sở dữ liệu và hệ thống tệp được chia thành các thư mục được đánh số để ngăn chặn hơn 100 inode được sử dụng trong một thư mục.

Tôi muốn để có thể truy cập vào các từ webserver front-end, như thế này:

http://(server)/filename-236581.jpg 

đâu filename là một chuỗi seo tối ưu hóa, giống như vào tên của tập tin thực tế.

Tôi có thể viết lại để viết lại URL để chứa các thư mục được đánh số bổ sung và tôi có thể nhận bí danh chuyển hướng yêu cầu tới thư mục có thể ghi/hình ảnh, nhưng tôi không thể thực hiện cả hai cùng một lúc . Nếu tôi đặt cả bí danh và chỉ thị mod_rewrite vào, nó bỏ qua bí danh và nhật ký lỗi phàn nàn rằng nó không thể tìm thấy tệp tin/html/tải lên-hình ảnh.

Dưới đây là những gì tôi có cho đến nay:

RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC] 

... và như vậy, tất cả các con đường lên đến:

RewriteRule ^(.*)\/([^\/]*)-([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/$3$4/$5$6/$7$8/$9$10/$2-$3$4$5$6$7$8$9$10$11$12.$13 [L,NC] 

alias /uploaded-images "filepath/writable/images" 

Tháo [L] làm cho không có sự khác biệt.

Trả lời

18

[L] có nghĩa là cuối cùng.

Điều bạn thực sự cần sử dụng cũng là cờ [PT] để cho biết rằng đường dẫn kết quả từ quy tắc viết lại của bạn nên được chuyển đến bộ xử lý tiếp theo trong trường hợp của bạn là chỉ thị bí danh.

Vì thẻ [PT] cũng ngụ ý thẻ [L] bạn không còn yêu cầu [L] nữa.

1

Đó [L] bạn đã sau RewriteRule có nghĩa là "cuối"

Thành thật mà nói, tôi tin rằng điều này chỉ có nghĩa là dòng RewriteRule hơn nữa sẽ được bỏ qua, nhưng nó có thể là giá trị kiểm tra ra.

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