문제

을 사용하고 싶 다시 쓰기 모드에서 변환하는 웹 페이지 같은 주소 /디렉토리 하기 /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

기 때문에 그것을 대체할 것입 scriptscript.rb.과 일치하는 정규식,그래서 그것을 대체 script.rbscript.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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top