書き換え後にスラッシュが抜けている理由がわかりません
以下は go.php コードです
リーリー書き換えルールは以下の通りです
リーリー巴扎黑2017-05-16 17:06:19
参考 Apache が複数のスラッシュを削除するのはなぜですか?
@Pekka 웃 さんは、URI 内の複数の隣接する /
不符合RFC标准,@Pekka 웃 猜测Apache被设计为将多个相邻的/
が 1 つにマージされていることを指摘しました。
同様に、調べてみると、nginxにはmerge_slashesという設定があり、リクエストURI内の隣接する2つ以上のスラッシュを1つにマージする機能を有効または無効にするために使用されますデフォルトの設定はTurnです。 に。 Apache と nginx はデフォルトで URI 内の複数の隣接する /
を処理する際に一貫した動作をしており、どちらも RFC 標準に従っていることがわかります。
http://localhost/go.php?url=http://www.163.com/ の //
については、1 つにマージされていませんが、
http://localhost/go/http://www.163.com/ の //
は 1 つにマージされており、前者は RFC 標準に準拠していますが、後者は準拠していません。
私は RFC 標準を深く理解していないため、上記の記述は厳密さが不十分である可能性があります。間違いがある場合は、ご指摘ください。しかし、この程度の理解ができれば、ほぼ十分だと思います。書き換えルールやコードの変更方法については、自分でググってください。