Rewriteengine 습니다.htaccess 를 잡는 파일에서 끝나지 않 html
-
03-07-2019 - |
문제
을 사용하고 싶 다시 쓰기 모드에서 변환하는 웹 페이지 같은 주소 /디렉토리 하기 /directory/index.html, 에서는 표준 호스팅 램프 상황이다.내가 무슨 일에 대한 주소에서 끝나는니다.나는 방법을 찾을 수 없습을 처리 주소는 끝나지 않는 슬래.
보이는 것이 작동해야입니다:
rewriterule ^(.*)/$ $1/index.html [L] /* addresses ending in / */
rewriterule ^(.*(?!html))$ $1/index.html [L] /* where the problem is */
그러나 두 번째 라인인 500 서버 오류가 있습니다.를 추가하는 경우 하나의자 x 두 번째 줄:
rewriterule ^(.*)/$ $1/index.html [L]
rewriterule ^(.*x(?!html))$ $1/index.html [L]
그것은 작동하기 시작하지만, 에 대해서만 디렉토리로 끝나는 이름 x.가 대체 x 과 함께 많은 것이 다릅니다.무엇보다 더 복잡한 실제 문자를(예[^x]또는.+) 제공 500 서버 오류가 있습니다.
고,여러분의 호기심을 충족시키기 위해,사람을 알고 왜 하나가 더 실제 문자를 만들 사이의 차이는 서버는 오류를 완벽하게 작동하는 규칙?
[허용 답변] 덕분에 검보할 수 있었을 대략적인 솔루션을 사용하여 rewritecond:
rewritecond %{REQUEST_URI} !\.[^/]+$ rewriterule (.+) $1/index.html [L]
이 작동하지만,필터 이상.html--그것을 차단할 수 있습니다.불행하게도,
rewritecond %{REQUEST_URI} !\.html$
결과에서 서버 오류가:
요청을 초과한 제한의 10 내부 리다이렉로 인해 가능한 구성에 오류가 있습니다.사용'LimitInternalRecursion'는 한계를 증가시키기 위해 필요한 경우입니다.
나는 여전히 좋아하는 이유를 알:
rewriterule ^(.*(?!html))$ $1/index.html [L]
결과입니다.첫 번째 절반을 확인하는 경우 지 끝에서.html.하반기 이후 가 .html,이와 동등한 기능:
while(substr($address,-4)!='html') $address.='html'
분명히 나는 뭔가를 누락.
해결책
용 RewriteCond
지시어는지 여부를 확인 URL 경로 끝나지 않는 .html
:
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^(.*[^/])?/?$ $1/index.html [L]
편집 를 사용하 look-ahead 션((?!…)
).하지만 아무것도 없 후 .*
(만 $
).그래서 시도하는 모습 뒤에 주장하는 대신:
RewriteRule ^.*$(?<!html) $0/index.html [L]
하지만 당신은 아마야 아파치 2.2 을 사용하여 이러한 주장.
다른 팁
기 위해,실제로 그것을 만드는 일이 그냥 사용할 수 있습 음 좌측의 대신에 미리 보기:
RewriteRule ^(.*)(?<!html)$ $1/index.html [L]
나는 확실하지 않다 석유를 추가하는'x'그것은 작품,나는 편집하는 경우 내가 알아낼 것입니다.
는 이유에 대한 추가 x
작동:면 교환이 일치 정규식,이 RewriteRule 됩니다.예를 들어,이는 오류를 발생시킨:
RewriteRule ^(.*)$ $1.rb
기 때문에 그것을 대체할 것입 script
가 script.rb
.과 일치하는 정규식,그래서 그것을 대체 script.rb
가 script.rb.rb
, 다시 다시...
이 시에서 오류 로그:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary.
예에서,당신은 추가 index.html 습니다.이 있는 경우 x
의 끝에서 정규식,그것은 일치하지 않습니다 당신의 교체로 끝나는 l
.