2016-11-30 14 views
1

:パス/ciim5/123/456/super_000000.jpgが要求されたとき、それは何をすべきのApacheの.htaccessリダイレクトファイル

# Rewrite super sized ciim5 images to large 
    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule ^ciim5/([0-9]+)/([0-9]+)/super_000000\.jpg$ /ciim5/$1/$2/large_000000.jpg [NC,L,R=301] 

は、それは301と同じパスにリダイレクトしますが、large_000000.jpgに仕えなければなりませんさ代わりに。 super_0000000.jpglarge_000000.jpgは、そのサーバー上の実際の物理ファイルです(実際には、大規模なイメージを公開して大規模にリダイレクトしたい)

私のlocalhost(Apache/2.4.7(Ubuntu) )、それがうまくいった(残りの.htaccessファイルは、プロダクションと同じです)。しかし、プロダクションサーバー(Apache/2.4.18(Ubuntu))にアップロードすると、何もしません。しかし、以前の既存のリライトが機能します(= mod_rewriteが有効になります)。 .htaccessファイルが本番サイトで更新されていることを確認しました。さらに、test.htmlファイルを作成してブラウザで開き、正しいディレクトリにファイルをアップロードしていることを確認しました。

私は今ここに座っています。誰かがプロダクションサーバで上記のように動作しない理由と、リダイレクトを行う方法を教えてください。

編集: パス/ciim5は、実際にはWebルートにないディレクトリのエイリアスとして設定されています。これは、Webルートの.htaccessファイルが読み込まれていない場合に当てはまりますか?代わりに.htaccessファイルを/ ciim5ディレクトリに置くべきですか?

編集2: ログを有効にすると、このことを示しています

[Thu Dec 01 10:05:48.444800 2016] [rewrite:trace1] [pid 4572] mod_rewrite.c(476): [client *:33116] * - - [*.org.uk/sid#7f767fb185c8][rid#7f767fa9c0a0/initial] pass through /ciim5/295/491/super_000000.jpg 
[Thu Dec 01 10:05:48.445015 2016] [rewrite:trace3] [pid 4572] mod_rewrite.c(476): [client *:33116] * - - [*.org.uk/sid#7f767fb185c8][rid#7f767fa9c0a0/initial] [perdir /static-media/] strip per-dir prefix: /static-media/295/491/super_000000.jpg -> 295/491/super_000000.jpg 
[Thu Dec 01 10:05:48.445113 2016] [rewrite:trace3] [pid 4572] mod_rewrite.c(476): [client *:33116] * - - [*.org.uk/sid#7f767fb185c8][rid#7f767fa9c0a0/initial] [perdir /static-media/] applying pattern '^(ciim5/[0-9]+/[0-9]+/)super_000000\\.jpg$' to uri '295/491/super_000000.jpg' 
[Thu Dec 01 10:05:48.445204 2016] [rewrite:trace1] [pid 4572] mod_rewrite.c(476): [client *:33116] * - - [*.org.uk/sid#7f767fb185c8][rid#7f767fa9c0a0/initial] [perdir /static-media/] pass through /static-media/295/491/super_000000.jpg 

この "ストリップあたり-dirの接頭辞" 事は何ですか? ciim5または静的メディア(ciim5にエイリアスされている実際のフォルダ)を削除するようです。だから私は実際にciim5の部分を私の書き換えから削除するべきですか?だからここ

+0

書き換えモジュール([LogLevel](https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging))のデバッグログを確認してください。両方のサーバーで。相違点がありますか? –

+0

@DavidDuponchelチェック**編集2 **、ありがとう! – Beebee

答えて

0

は私がしなければならなかったものです:

マイウェブルートは/var/www/*.org.ukです。しかし、メディアファイルはルートディレクトリの/static-mediaにあります。私は/static-media.htaccessファイルを入れて、次のディレクティブを入れていた:要求は、Apache、strip per-dir prefixに来るときのように

RewriteRule ^([0-9]+/[0-9]+/)super_000000\.jpg$ /ciim5/$1large_000000.jpg [NC,L,R=301] 

は思え削除するようだ/静電気に(私はこれが何であるかを知りません!)メディアおよび/ ciim5ディレクトリプレフィックスを含むため、/ static-mediaの.htaccessファイルの受信要求(/ciim5/123/456/super_000000.jpgなど)は、/123/456/super_000000.jpgです。だから私は同じパスにリダイレクトする必要がありますが、/ ciim5接頭辞とlarge_000000.jpg。これは実際に試行錯誤して行われたもので、なぜこれがどのように機能するのか完全に理解できません。ですから、この回答を拡大してください。