>  Q&A  >  본문

Apache Rewrite에 대해 질문하기

다시 쓴 후 슬래시가 누락되는 이유를 모르겠습니다

다음은 go.php 코드입니다

으아악

다시 쓰기 규칙은 다음과 같습니다

으아악
PHPzPHPz2713일 전724

모든 응답(3)나는 대답할 것이다

  • 巴扎黑

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

    참조 Apache가 여러 개의 슬래시를 제거하는 이유는 무엇입니까?
    @Pekka 웃은 URI에서 인접한 여러 /가 RFC 표준을 준수하지 않는다는 점을 지적했고, @Pekka 웃은 Apache가 인접한 여러 /를 하나로 병합하도록 설계되었다고 추측했습니다. /不符合RFC标准,@Pekka 웃 猜测Apache被设计为将多个相邻的/合并成一个。


    同样,我搜索后了解到在nginx中有merge_slashes这样一项配置,用于开启或者关闭将请求URI中相邻两个或更多斜线合并成一个的功能,默认这项配置是开启的。由此可见,apache和nginx默认在处理URI中多个相邻/时行为时一致的,都遵循了RFC标准。


    至于http://localhost/go.php?url=http://www.163.com/中的//没有合并成一个,而 http://localhost/go/http://www.163.com/中的// <시간>

    마찬가지로 검색해보니 nginx에 merge_slashes와 같은 구성이 있다는 것을 알게 되었는데, 이는 요청 URI에서 두 개 이상의 인접한 슬래시를 하나로 병합하는 기능을 켜거나 끄는 데 사용됩니다. 이 구성의 기본값은 활성화입니다. Apache와 nginx는 기본적으로 URI에서 인접한 여러 /를 처리할 때 일관된 동작을 가지며 둘 다 RFC 표준을 따른다는 것을 알 수 있습니다.

    <시간>

    http://localhost/go.php?url=http://www.163.com/의 //는 하나로 병합되지는 않지만, http://localhost/go/http://www.163.com/의 //는 하나로 병합됩니다. 전자는 RFC 표준을 준수하고 후자는 준수해야 합니다. 아니다. 🎜 🎜RFC 표준에 대한 깊은 이해가 없기 때문에 위의 설명이 충분히 엄격하지 않을 수 있습니다. 실수가 있으면 지적해 주세요. 하지만 이 수준을 이해한 후에는 이제 거의 충분하다고 생각합니다. 다시 작성 규칙이나 코드를 변경하는 방법은 Google에서 직접 찾아보세요. 🎜

    회신하다
    0
  • 漂亮男人

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

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

    회신하다
    0
  • 巴扎黑

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

    아파치가 경로에서 // 化简成一个 /를 제거한 것 같아요.

    회신하다
    0
  • 취소회신하다