2

modの書き換えに少し問題があります。私の友人は、画像をアップロードできるスクリプトを書いています。

私たちがやりたいのは、ユーザーがドメイン名を直接画像リンクに追加できるようにすることです。スクリプトは、指定されたURLから画像を取得します。

たとえば、画像がhttp://www.test.com/image.jpgにある場合、domain.com /http://www.test.com/image.jpgを追加すると、スクリプトでそのURLを取得できるようになります( test.com)必要な画像を取得します。

編集:ユーザーがHTTPを手動で削除する必要がないため、HTTPはURLの前にあります。ブラウザに画像が表示され、その前に「domain.com」、http、およびすべてが追加され、スクリプトがその画像を取得してサーバーに保存します。

私が使用しているルールは次のとおりです。

RewriteRule ^([\w|.|/]+(jpg|png|gif))$ /upload.php?url=http://$1 [B,L,NC,R=302]

これはURLと正しく一致しますが、http://のコロンが問題を引き起こします。

ユーザーがdomain.com/www.test.com/image.jpgと入力すると、機能します。

ユーザーがdomain.com/http://www.test.com/image.jpgと入力すると、機能せず、403禁止ページ(WindowsではXAMPP)が表示されます。

ユーザーがdomain.com/http//www.test.com/image.jpgと入力すると、機能します(httpにコロンはありません)。

編集:動作するということは、ローカルでテストすると、エラー403が表示されるのではなく、$ _GET['url']パラメーターで渡したURLが正しく表示されることを意味します。

このルールの何が問題になっているのか、どのように修正するのか教えてください。または、必要な動作を実現するための代替ソリューションはありますか?

ありがとうございました。

4

4 に答える 4

3

さて、私は問題を見つけたと思います。それは正規表現でも、mod_rewrite自体でもありませんでした。

つまり、WONTFIXと宣言されているのはWindows上のApacheのバグです。

参考までに、このStackOverflowスレッドこのバグレポートを参照してください。

私は見つけたものを投稿しており、この質問に答えたと見なします。皆さん、ありがとうございました!

于 2012-05-03T23:32:23.410 に答える
1

PHPでurlencode()を使用できます

于 2012-05-03T22:16:51.707 に答える
1

このアプローチは煩雑で、エラーが発生しやすく、安全ではありません(たとえば、画像のURLは、これらのよく知られたファイル拡張子で終わる必要はありません)

私があなたのユースケースを理解しているなら、それはユーザーがウェブをサーフィンしていて、彼が画像を見ているときに始まり、彼はあなたのサービスを介してそれを共有したいと思っています。次にhttp://your.sharing.service、テキストの直前にあるブラウザのアドレスバーに手動で入力します。次にmod_rewrite、スクリプトをトリガーするために使用しますが、正規表現(およびサービスも)は、予測できない多くの方法で失敗すると思います。

私はこのようなサービスを使用したことはありません。ボタンを使用してURLをスクリプト(たとえばhttp://my.service.com/upload?url=...)に送信するという標準的なアプローチをお勧めします。

于 2012-05-03T22:42:48.613 に答える
0

問題は正規表現にあります...

試す:

^((http|https)+[\:\/\/\w\.]+(jpg|png|gif))$
于 2012-05-03T22:22:59.847 に答える