1

domain.com/user/upload/12345.jpgリンクを からに書き換えようとして domain.com/12345.jpgいますが、ファイル拡張子がjpggifまたはpng. 私は、それは次のようになるべきだと思います:

     RewriteRule ^user/upload/$ /$1 [L, QSA]

しかし、私のバージョンは動作しません。どうすれば修正できますか?

4

2 に答える 2

1

あなたの実際のパスはユーザー/アップロードであり、ルートディレクトリのようにしたいと思います(私には理にかなっています)。それ以外の場合は、パスを変更してください。

これでうまくいくと思います。

RewriteRule ^([^\.]+)\.(jpg|gif|png)$ http://domain.com/user/upload/$1.$2 [NC,L]

または、これも:

RewriteRule ^(.+?)\.(jpg|gif|png)$ http://domain.com/user/upload/$1.$2 [NC,L]

QSA を渡すためのクエリ文字列がありません (たとえば?id=5&name=myname、? の後の はクエリ文字列です)。

編集:

リモート リダイレクトの書き換え URL を保持したい場合は、すべての一致を次のようなローカル ファイルにリダイレクトすることをお勧めします: remoteimage.php:

RewriteRule ^(.+?).(jpg|gif|png)$ remoteimage.php?filename=$1&extension=$2 [NC,L]

このファイルは画像を読み取り、ブラウザに再送信します...

何かのようなもの:

<?php
    // Remote image
    $filename = $_GET['filename'];
    $ext = $_GET['extension']; // Of course you will need some validations, etc.


    header('Content-type: image/' . ($ext != 'jpg' ? $ext : 'jpeg'));

    // This is the idea, you could use cURL, fopen, etc. and you probably need to validate response status code and received data
    $image = file_get_contens("http://domain.com/user/upload/{$filename}.{$extension}");

    echo $image;
?>

codeigniter や kohana などのフレームワークを使用している場合は、読み取りをキャッチする必要がある場合があります。

于 2012-12-29T09:48:26.043 に答える
1

これを試すことができます:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI}  /([^/]+)\.(jpg|jpeg|gif|png)$
RewriteRule .* http://domain.com/user/upload/%1.%2 [L]

これをマップします:

http://domain.com/any_name.any_extension

これに:

http://domain.com/user/upload/any_name.any_extension

オプション

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  (/m)?/([^/]+)\.(jpg|jpeg|gif|png)$
RewriteRule .* http://domain.com/user/upload%1/%2.%3

これをマップします:

http://domain.com/any_name.any_extensionまたはこれ

http://domain.com/m/any_name.any_extension

これに:

http://domain.com/user/upload/any_name.any_extensionまたはこれ

http://domain.com/user/upload/m/any_name.any_extension

/mサブディレクトリの存在に応じて。

于 2012-12-29T10:19:59.280 に答える