2017-03-23 2 views
0

대/소문자를 구분하지 않고 입력 할 수있는 여러 개의 URL이 있습니다. 허영 URL로 사용됩니다.mod_alias는 후미 슬래시 두 개를 리디렉션합니다.

htaccess로는 다음과 같습니다

Redirect 301 /folder/vanity1 http://example.com/differentfolder/ 
Redirect 301 /folder/vanity2 http://example.com/a/third/folder/ 
Redirect 301 /vanity3 http://example.com/fourth/folder/ 

사용자 입력 : 사용자가 후행 슬래시 다음을 입력하면

http://example.com/folder/vanity1 
http://example.com/folder/vanity2 
http://example.com/vanity3 
http://example.com/folder/vanity1/ 
http://example.com/folder/vanity2/ 
http://example.com/vanity3/ 

는, 리디렉션이 끝나는 제대로 작동 http://example.com/differentfolder/에 원하는대로 후행 슬래시가 하나 있습니다.

문제 :

사용자가 같은 404 오류가 발생 http://example.com/differentfolder//로, 두 후행 슬래시를 가진 URL로 리디렉션 등 http:/example.com/folder/vanity1/ 같은 후행 슬래시 다음을 입력합니다.

이 나는 ​​시도했다 :

  1. htaccess로 다른 모든 라인을 제거,이 세 가지 허영 URL 및 사이트의 기능을 유지하는 데 필요한 표준 워드 프레스 블록을 제외하고. 워드 프레스 블록은 파일의 맨 끝에 나타납니다 :

# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase/ RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

내가 헤더 내가 캐시 규칙을보고하지 않은 있는지 확인하십시오 브라우저로하지만 WebConfs HTTP하지 만 확인. 여전히 똑같은데, 슬래시가없는 가상 URL을 입력하면 작동합니다. 하나 후행 슬래시를 입력하면, 그것은 원인이 후행 슬래시로 리디렉션 (404)

  • 내 규칙 뒤에 슬래시 추가
      이 :

    Redirect 301 /folder/vanity1/ http://example.com/differentfolder/

    사용자가 슬래시를 입력하면 제대로 작동하지만 슬래시를 두지 않으면 URL http://example.com/folder/vanity1/이 실제로 존재하지 않기 때문에 리디렉션되지 않고 404가 리디렉션되지 않습니다.

    질문 : (301)는 하나의 상관없이, 슬래쉬하지와 최종 목적지로 허영 URL을 리디렉션에

    다른 방법이 있나요하는 방법 세면대 URL에 방문자 유형 - 또는 후행하지 않고 삭감? 일치하는 URL 경로 넘어

  • 답변

    2

    이 같은 Redirect에 설명 된 작품,

    추가 경로 정보가 대상 URL에 추가됩니다.

    즉, /folder/vanity1은 접두사로만 작동하며 요청 된 URL에있는 추가 슬래시 또는 다른 것이 대상에 추가됩니다.이 두 URL은, /folder/vanity1/folder/vanity1/, 당신이

    RewriteRule ^folder/vanity1/?$ /differentfolder/ [R,L] 
    
    처럼 보일 것 RewriteRule으로 하나 RedirectMatch 또는 mod_rewrite


    을 사용해야 정확히 일치 할 경우 http://example.com/folder/vanity1/hi/therehttp://example.com/differentfolder//hi/there

    초래

    이 패턴은 /? 때문에 선택적 슬래시가 있거나없는 경우 모두 일치합니다. 속눈썹. 다른 규칙은 비슷할 것입니다.

    모든 것이 제대로 작동하면 RR=301 (permanent redirect)으로 바꿀 수 있습니다. R=301으로 테스트하지 마십시오.


    그리고 RedirectMatch로, 그것은 예상대로, 당신은 301에 상태 코드를 설정할 수 있습니다 작동 할 때 거의 같은

    RedirectMatch ^/folder/vanity1/?$ /differentfolder/ 
    

    같은 면책 조항이 여기에 적용 보일 것이다.

    +0

    **^폴더 **는 ** ^/폴더 여야합니다. RedirectMatch는 절대 경로를 사용하기 때문에 **. – starkeen

    +0

    두 가지 옵션을 명확히하고 제공 해줘서 고맙습니다. 하나가 다른 것보다 효율적입니까? – WebElaine

    +0

    @starkeen 이걸 잡아줘 고마워 .-) –