1

静的ファイル(画像、ビデオなど)をホストするためにAmazonS3を使い始めたところです。アップロードされたファイルにアクセスするために、一時的なリンクが作成されます。一時的なリンクは次のようになります。

http://zeebit.s3.amazonaws.com/stackoverflow-logo.png?AWSAccessKeyId=AKIAIXEHEYSBDWAAXVVA&Expires=1346888760&Signature=B%2BS%2FlUoRXno3UfSqf9Ua0RuCcBc%3D

私が欲しいのは、次のようなURLを介してこれらのファイルを提供することです。

http://s3.mydomain.com/zeebit/stackoverflow-logo.png/AKIAIXEHEYSBDWAAXVVA/B%2BS%2FlUoRXno3UfSqf9Ua0RuCcBc%3D

PHP経由でリクエストをAmazonURLにリダイレクトできることは知っていますがhttp://s3.mydomain.com(たとえば)、アドレスバーを変更したくありません。.htaccessを作成してURLをAmazonURLに変換することはできますが、私が知っているように、.htaccessは外部リソースにリダイレクトできません。

では、どうすればこれを解決できますか?

4

1 に答える 1

2

いくつかの解決策があります:

.htaccessソリューション#1-書き換えルール

RewriteEngine On
RewriteCond %{HTTP_HOST} ^s3\.  # Hostname starts with "s3."
RewriteCond %{REQUEST_URI} !-f  # Not a file
RewriteCond %{REQUEST_URI} !-d  # Not a directory
RewriteRule ^/(.+)/(.+)/(.+)/(.+)/(.+)$    http://$1.s3.amazonaws.com/$2?AWSAccessKeyId=$3&Expires=$5&Signature=$4 [R=302,L]

注:最初に必要なURLに「有効期限」の値がないため、上記のように形成されたURLに対して上記が機能します。

http://s3.yourdomain.com/[[S3_Bucket_Name]]/[[S3_Filename]]/[[AWSAccessKeyId]]/[[Signature]]/[[Expires]]

それで:

http://s3.mydomain.com/zeebit/stackoverflow-logo.png/AKIAIXEHEYSBDWAAXVVA/B%2BS%2FlUoRXno3UfSqf9Ua0RuCcBc%3D/1346888760

にリダイレクトします

http://zeebit.s3.amazonaws.com/stackoverflow-logo.png?AWSAccessKeyId=AKIAIXEHEYSBDWAAXVVA&Expires=B%2BS%2FlUoRXno3UfSqf9Ua0RuCcBc%3D&Signature=1346888760

.htaccessソリューション#2-リダイレクト

上記よりも柔軟性の低いソリューションですが、 .htaccessファイルに次のものを入れることができます

redirect 302 /s3/ http://zeebit.s3.mydomain.com/

このルールを使用して、

http://yourdomain.com/s3/stackoverflow-logo.png?AWSAccessKeyId=AKIAIXEHEYSBDWAAXVVA&Expires=B%2BS%2FlUoRXno3UfSqf9Ua0RuCcBc%3D&Signature=1346888760

基本的に、その後のすべてを保持し/s3/、それ以前のすべてをAmazonS3の場所に置き換えるだけです。

http://zeebit.s3.amazonaws.com/stackoverflow-logo.png?AWSAccessKeyId=AKIAIXEHEYSBDWAAXVVA&Expires=B%2BS%2FlUoRXno3UfSqf9Ua0RuCcBc%3D&Signature=1346888760
于 2012-09-05T16:05:31.417 に答える