16

別の管理システムからアップロードされた画像を保存するために使用されるディレクトリが 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] を削除しても違いはありません。

4

2 に答える 2

18

[L]は最後を意味します。

実際に使用する必要があるのは [PT] フラグで、書き換えルールからの結果のパスを次のハンドラーに渡す必要があることを示します。これは、この場合はエイリアス ディレクティブです。

[PT] タグは [L] タグも意味するため、[L] も必要ありません。

于 2008-12-02T15:10:37.297 に答える
1

RewriteRule の後にある [L] は「最後」を意味します

正直なところ、これはそれ以上の RewriteRule 行が無視されることを意味するだけだと思っていましたが、調べてみる価値はあるかもしれません。

于 2008-12-02T14:41:34.580 に答える