2

PHPを使用して画像の低解像度コピーを生成するスクリプトに取り組んでいます。ファイルが存在しない場合にのみ PHP スクリプトを実行する mod_write に苦労しています。

私が現在持っているもの(今日何千回も試行したため、少しずれている可能性があります)は次のとおりです。

RewriteCond %{REQUEST_URI} (900x...|...x900)\.(png|jpe?g|gif)
RewriteCond %{HTTP_COOKIE} ^(.*;\ )?(window_resolution=(640))(;\ .*)?$ [NC]
RewriteRule full/(.*) /responsive/cache/480/responsive/$1 [L]

RewriteCond %{REQUEST_URI} (.*)(900x...|...x900)\.(png|jpe?g|gif)
RewriteCond %{HTTP_COOKIE} ^(.*;\ )?(window_resolution=(.*))(;\ .*)?$ [NC]
RewriteCond %{DOCUMENT_ROOT}/responsive/cache/%3%{REQUEST_URI} !-f
RewriteRule .* /responsive/resize.php [L]

現在、ファイルは次のように配置されています。

/responsive/full/photo-900x500.jpg

キャッシュは次の場所に保存されます。

/responsive/cache/

次の形式で:

/responsive/cache/<resolution>/<original path>

ファイルが必要な場所の例:

/responsive/cache/768/responsive/photo-900x500.jpg

理想的には、これは、このような構造を作成するワードプレスのようなもので使用されます

キャッシュ:

/cache/

オリジナル:

/wp-content/uploads/*

例:

/cache/768/wp-content/uploads/2012/01/test.jpg
4

1 に答える 1

0

何時間も削除して最初からやり直した後、これを思いつきましたが、うまく機能しているようです。必要に応じて完全なファイルパスを予約し、cooke を介して画像サイズを選択できるようにします。

RewriteCond %{ENV:REDIRECT_STATUS} $^
RewriteCond %{REQUEST_URI} (900x...|...x900)\.(png|jpe?g|gif)
RewriteCond %{HTTP_COOKIE} ^(.*;\ )?(ricache_width=(480|640|768|992|1170))(;\ .*)?$ [NC]
RewriteRule (.*) /responsive/cache/%3/responsive/$1

RewriteCond %{ENV:REDIRECT_STATUS} $^
RewriteCond %{REQUEST_URI} (.*)(900x...|...x900)\.(png|jpe?g|gif)
RewriteCond %{HTTP_COOKIE} ^(.*;\ )?(ricache_width=(480|640|768|992|1170))(;\ .*)?$ [NC]
RewriteCond %{DOCUMENT_ROOT}/responsive/cache/%3%{REQUEST_URI} !-f
RewriteRule .* /responsive/resize.php [L]

RewriteCond %{ENV:REDIRECT_STATUS} $^
RewriteRule .* - [L]

404 がありません (これは大したことではありません。PHP にバックアップがありますが、それを置き換える必要があります)。しかし、少なくともこれは機能する良い出発点です! :)

于 2013-01-13T17:24:12.367 に答える