2017-10-15 5 views
2

처음으로 .htaccess을 사용 중이며 루프 문제가 발생했습니다..htaccess는 index.php에 대한 모든 요청을 다시 작성합니다.

http://something.com/index.php?page=anything 지금까지 내 현재 시도가 만족스럽게 작동하는 다음과 같습니다에 http://something.com/main

  • http://something.com/anything 재 작성에

    1. http://something.com 재 작성 : 나는 다음을 달성하기 위해 노력하고있어

      RewriteEngine on 
      RewriteBase/
      
      RewriteRule ^/?$ /main [L] 
      
      RewriteCond %{REQUEST_FILENAME} !-d 
      RewriteCond %{REQUEST_FILENAME} !-f 
      
      RewriteRule ^(.*)$ /index.php?page=$1 [NC,L] 
      

      그러나 http://something.com/index.php에 대한 요청이 http://something.com/index.php?page=index.php이되도록 다시 쓰기 조건을 모두 제거하고 싶습니다. 두 개의 RewriteCond 행을 제거하면 루프가 발생하고 다시 쓰기가 작동하지 않습니다.

      내가 뭘 잘못하고 있고 어떻게 문제를 해결할 수 있습니까? 감사!

  • 답변

    1

    당신은 이러한 조건을 제거 할 수 있지만, 당신은 당신의 규칙을 반대하고 대상의 URI에서 최고의 /을 제거해야합니다 : 또한

    RewriteEngine on 
    RewriteBase/
    
    RewriteRule ^(.+)$ index.php?page=$1 [QSA,L] 
    
    RewriteRule ^/?$ main [L] 
    

    지금 당신의 첫 번째 규칙은 또한 index.php?page=...에 CSS/JS/이미지 요청을 다시 작성할 것을 기억 . 이를 피하려면 먼저이 조건을 먼저 추가하십시오. RewriteRule :

    RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|ico|tiff|css|js)$ [NC] 
    
    +0

    고마워요! 이것은 내가 원하는대로 정확하게 작동합니다. 다시 쓰기는 외부 CDN에서 콘텐츠를 동적으로로드하는 웹 응용 프로그램 용입니다. 의도 된 행동은이 경우에'index.php'를 통해 모든 것이 이루어 지도록하는 것입니다. –