2012-08-30 2 views
1

에 HTML 지점이 내가 .html.php 파일을 사용하려면 다음과 같은 규칙 는 리디렉션 HTML과 PHP하지만, PHP

RewriteRule ^index\.html$ index.php [L] 
RewriteRule ^index\.php$ index.html [R=301] 

을 고려,하지만 난 URL이 항상 .html 확장자를 갖고 싶어.

위의 규칙은 리디렉션 루프를 만듭니다. 이 작업을 수행하는 올바른 방법은 무엇입니까?

답변

1

실제 요청에 대해 확인하거나 루프를 완전히 차단할 수 있습니다.

  1. 옵션 1, 요청에 대해 확인이 실제 요청하지 index.php 경우가 있으므로, 리디렉션이 발생하지 않을 수 있습니다

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php 
    RewriteRule ^index\.php$ index.html [R=301] 
    

    .

  2. 옵션 2, 엔진을 완전히 다시 쓸 수 없도록합니다. htaccess 파일 상단에 다음을 추가하십시오.

    RewriteCond %{ENV:REDIRECT_STATUS} 200 
    RewriteRule^- [L] 
    

    단점은 실제로 루프하려는 규칙이 있다는 것입니다.

+0

감사합니다.^[A-Z] {3,9} \'이 첫 번째 해결책에서 무엇을 설명했는지 생각해보십시오. –

+0

@stevether'% {THE_REQUEST}'var는 글자 그대로 HTTP 요청의 첫 번째 줄입니다. 'GET /index.php HTTP/1.1'이고'^ [A-Z] {3,9}'는''method ''부분과 일치하며 3에서 9 문자 사이의 길이를 가질 수 있습니다. GET/POST 만 신경 쓰면,'(GET | POST)'로 바꿀 수 있습니다. –