ホームページ  >  に質問  >  本文

Apache リライトについて質問する

書き換え後にスラッシュが抜けている理由がわかりません

以下は go.php コードです

リーリー

書き換えルールは以下の通りです

リーリー
PHPzPHPz2713日前721

全員に返信(3)返信します

  • 巴扎黑

    巴扎黑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 標準を深く理解していないため、上記の記述は厳密さが不十分である可能性があります。間違いがある場合は、ご指摘ください。しかし、この程度の理解ができれば、ほぼ十分だと思います。書き換えルールやコードの変更方法については、自分でググってください。

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-16 17:06:19

    http://php.net/manual/zh/function.urldecode.php

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-16 17:06:19

    Apache がパス内の // 化简成一个 / を削除したと思います。

    返事
    0
  • キャンセル返事