2017-01-28 11 views
0

私は最近、サブドメインのすべてのファイルを別のフォルダにソートしました。それをupload.example.orgと呼びましょう。新しいフォルダの1つに「img」(public_html/upload/img)というタイトルが付いています。ここで簡単に共有できるように写真を自動的にアップロードします。以前はすべての画像がドキュメントのルートフォルダに「アップロード」されていましたが、これがURLの共有元であったため、新しいURLへのリダイレクトが必要です。ワイルドカードからサブドメインのルートフォルダからサブドメインのサブフォルダにリダイレクト

ここで私がしようとしているのは、upload.example.org/image.jpgからupload.example.org/img/image.jpgに人をリダイレクトする.htaccessを作成することです。 image.jpgは、imgフォルダ内の他のファイル名で置き換えることができます。 http://upload.example.org/img/img/img/img/img/img/img/img/img/img/image.jpgに私をリダイレクトする最後に、ループ内で私のサブドメインの結果とのコード行を使用して

RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

の答えを探して、私はこれを見つけました。

異なる.htaccessの亜種を検索して試したところ、正しい解決策を見つけることができませんでした。

何か助けていただければ幸いです。 :)

答えて

0

リダイレクト後にクライアントが新しいURLを要求し、この新しいURLが再度リダイレクトされるため、クライアントからの新しい要求が発生し、リダイレクトが再度発生するためです。

これを避けるには、ルールの前にストップ条件を付加する必要があります。

RewriteRule ^img/ - [L] 

要求されたURLがすでにimg/で始まる場合、これは、書き換えチェーンへの出口を引き​​起こします。


別のアプローチは、適切なファイルがimgフォルダに存在する場合、最初のテスト、及び存在する場合にのみリダイレクトすることであろう。

RewriteCond /img/$1 -f 
RewriteRule ^(.*)$ ^img/$1 [R,L] 

あなたが任意の書き換えからフォルダを除外したい場合は、上記の例のように停止条件のルールを使用

RewriteRule ^path/to/some/folder - [L] 

これは、すべての要求が与えられたURLパスで始まることを、確実にこれまでに書き直されたり、リダイレクトされたりします。

imgルール以外の例外をルールに追加すると、結果のパスがこの他のフォルダにあるかどうかを確認するルールを追加できます。

RewriteCond /img/$1 -f 
RewriteCond /img/excluded/folder/$1 !-f 
RewriteRule ^(.*)$ ^img/$1 [R,L] 

これらの条件は、画像がどこかimgサブフォルダに存在する場合、最初にチェックし、それがimg/excluded/folder内のファイルではありませんことを確認してください。無関係な、しかしR=301決してテスト


!すべての作業が完了したら、RR=301に置き換えてください。

+0

ありがとう、非常に参考になりました。最後の1つのリクエストは、完全な.htaccessがどのようにそのように見えるかを表示できますか? – Mikusch

+0

最初の 'RewriteRule'を他のルールの前に置くことができます。代わりに2番目のルールを試したい場合は、既存の 'RewriteRule'を' RewriteCond/RewriteRule'のペアに置き換えてください。 –

+0

これらのルールは、.htaccessが 'upload'フォルダにある場合にのみ動作します。 .htaccessがルートディレクトリにあるときは、もちろん 'img'を' upload/img'に置き換える必要があります。 –

関連する問題