2017-02-01 16 views
0

http://127.0.0.1:8888/storage/app/media/からhttp://127.0.0.1:8888/v/にパスを書き込むにはどうすればよいですか?パスを書き換える方法は?

ファイル名とファイル名の後には任意の名前を付けてください。

私が試してみた:http://127.0.0.1:8888/v/file.mp4に行く

location /v { 
    rewrite ^/v /storage/app/media/ last; 
} 


location /v { 
    proxy_pass http://127.0.0.1:8888/storage/app/media/; 
} 


location /v { 
    proxy_pass http://127.0.0.1:8888; 
    rewrite ^/v /storage/app/media/ last; 
} 


location ~ ^/v/(.*) { 
    rewrite ^/storage/app/media(.*) /v/$1 last; 
} 


location ~ ^/v/(.*) { 
    return 301 /storage/app/media/$1; 
} 

は、ページが見つかりませんを示しています。

http://127.0.0.1:8888/storage/app/media/file.mp4は、URLを書き換えずに表示します。

編集:私は

rewrite ^/v/(.*)$ /storage/app/media/$1 last; 

でパスをマスクすることができました

がどのように私は今/ Vに行くなかれする/ストレージ/アプリ/メディアをリダイレクトしますか/?

私が試してみた:

location ~ ^/storage/app/media(.*) { 
    return 301 /v/$1; 
} 

答えて

0

は、あなたがしたいようだ:

  1. クライアントが/path/to/storage/app/media下の物理ファイルにマップし/v/xxxにリダイレクトする/storage/app/media/xxx、および
  2. /vにアクセスします。

あなたは/storage/app/media/vをマップするためにrewrite...lastを使用することができます(あなたが発見したとして)それはあなたのサーバが可能ですが、トリッキーなループせずに(1)を実装します両方のURIを、受け入れなければならないことを意味します。

の代替ではなくaliasを使用することです:

location /v { 
    alias /path/to/storage/app/media; 
} 

location /storage/app/media { 
    rewrite ^/storage/app/media(.*)$ /v$1 permanent; 
} 

詳細についてはthis documentを参照してください。

+0

動作していないようです。私は書き直しとエイリアスを試しました。 /storage/app/media/file.mp4を訪問しても/v/file.mp4にはリダイレクトされません。書き換えなしでエイリアスを使用すると、/ v/404エラーが発生します。 –

+0

設定に競合するロケーションブロックまたはステートメントが存在する可能性があります。あなたが質問を編集し、 'server'ブロック全体を追加すると助けになるかもしれません。 –

関連する問題