2009-11-18 7 views
0

3 가지 "규칙"이 있습니다. 하나는 URL이 소문자이고 다른 하나는 디렉토리 끝에 슬래시를 포함시키는 것이며, 세 번째는 index.html 페이지에 대한 액세스가 디렉토리를 대신 통과하도록하는 것입니다.IIRF 리디렉션 규칙을 결합 하시겠습니까?

내가 가진 방법과 관련된 문제는 때로는 여러 301 개의 리디렉션이 발생하는 경우입니다. 나는 각 규칙을 차례로 적용한 다음 꼭 필요한 URL을 한 번 최종 URL로 리디렉션하는 것이 좋을 것입니다. 예를 들어 URL을 소문자로 변환하고 슬래시를 추가해야 할 수 있습니다. 또는 에서 index.html으로 변경해야 할 수도 있습니다.

어떻게하면됩니까? 매우 감사합니다.

규칙은 다음과 같습니다 :

#LOWERCASE URLS For Directories, aspx, html files 
RedirectRule ^/(.*[A-Z].*(/|\.html|\.aspx))$ /#L$1#E [R=301] 


#ADD SLASH TO DIRECTORIES 
#--------------------------------------------- 
#Perm Redirect If: 
#Starts w/ Forward Slash 
#Match Any Characters Except (. or ?) 1 or more times 
#End w/ someting besides a dot, ?, or slash 
#If So, Perm Redirect captured piece W/ Slash At End and at front 
RedirectRule ^/([^.?]+[^.?/])$ /$1/ [I,R=301] 


#CHANGE INDEX.HTML REQUESTS TO DIRECTORY REQUESTS 
#--------------------------------------------- 
RedirectRule ^/(.*)/index\.html$ /$1/ [I,R=301] 

답변

0

가 난 단지 후자의 두 가지를 결합 할 수있는 기회를 참조하십시오

RedirectRule ^/([^A-Z?]*[A-Z].*(/|\.html|\.aspx))$ /#L$1#E [R=301] 
RedirectRule ^/([^.?]+?[^.?/])(/index\.html)?$ /$1/ [I,R=301] 
0

불행히도 IIRF 포럼의 응답으로 여러 개의 리디렉션 문제가 해결되지 않습니다. 각 규칙은 여전히 ​​자체 리디렉션을 유발합니다.

RedirectRule가 IIRF 상태에서 오류가 발생하는 대신 여기서 리다이렉트 플래그없이]는 RewriteRule의 사용 :

# rule: 
# force HTTPS [disable on dev site until port 80 and port 443 served by same site] 
# after rewrite continue with remaining tests 
RewriteCond %{HTTPS} off 
RewriteRule ^/(.*)$ https://www.example.com/$1 [NC] 

오류 : C : \를 Inetpub \ wwwroot에 \ 예-COM \ WWW Iirf.ini \을 (26) : 경고 : 정규화 된 URL로 다시 작성하십시오. 아마 틀렸어. RedirectRule 또는 ProxyPass가 필요할 수 있습니다.

나는 IIRF가이 규칙의 결과를 받아 IIRF 규칙을 통해 다시 보내고 다른 URL 수정 사항을 가져 와서 궁극적으로 단일 301 리디렉션을 모든 재 작성의 최종 결과. [N] 플래그는 mod_rewrite에서 이해합니다.

관련 문제