別の管理システムからアップロードされた画像を保存するために使用されるディレクトリが webroot の外にあります。画像は次の形式で保存されます。
filepath/writable/images/00/00/23/65/filename-236581.jpg
(webroot は filepath/html です)
...例えば。ここで、236 はデータベース内のイメージの ID であり、ファイル システムは番号付きのディレクトリに分割され、1 つのディレクトリ内で 100 を超える inode が使用されるのを防ぎます。
次のように、フロントエンド Web サーバーからこれらにアクセスできるようにしたいと考えています。
http://(server)/filename-236581.jpg
filename は、実際のファイルの名前と同じように、seo に最適化された文字列です。
mod-rewrite を使用して URL を書き換えて、追加の番号付きディレクトリが含まれるようにすることができます。エイリアスを取得して、要求を writable/images ディレクトリにリダイレクトすることもできますが、両方を同時に行うことはできません。エイリアス ディレクティブと mod_rewrite ディレクティブの両方を入れると、エイリアス ディレクティブが無視され、エラー ログに filepath/html/uploaded-images が見つからないというメッセージが表示されます。
これが私がこれまでに持っているものです:
RewriteRule ^(.*)\/([^\/]*)-([0-9])\.(gif|jpg|jpeg|png)$ /uploaded-images/00/00/00/00/$2-$3.$4 [L,NC]
...など、次のようになります。
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"
[L] を削除しても違いはありません。