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.