2013-07-01 2 views
1

내 주요 사이트 엔진으로 사용할 멋진 Concrete5 CMS를 설치하려고합니다. 문제는 약 15 개의 다른 파일과 디렉토리가 있으며, 내 뿌리를 깔끔하게 정리한다는 것입니다. 나는 이것을 /_concrete/ 서브 디렉토리로 옮기고 싶지만 여전히 도메인 루트에서 관리하고있다..htaccess - 별칭에 대한 모든 www-only 요청

htaccess는 많은 연구와 학습, 많은 오류 500 초 후에 내 자존심을 극복하고 있으며 여기에 게시하고 있습니다. 여기 정확히 내가 달성하기 위해 노력하고있어 무엇을 :

  • www.domain.com을 통해받는 모든 요청은 기존 파일의 경우를 제외하고, www.domain.com/_concrete/로 전달됩니다.
  • 최종 사용자 URL 으로 변경하면 안됩니다. www.domain.com/_concrete/이 제공되는 경우에도 계속 사이트는 www.domain.com으로 표시됩니다.
  • 이 사이트에는 루트 내에 하위 폴더로 여러 하위 도메인이 있으므로 www.domain.com을 통해 들어오는 요청 만 리디렉션되어야합니다.

여기에 내가 오류 500 만들어 내 htaccess로, 함께있어 가장 가까운입니다 : 이것은 피와 땀 (대부분 혈액) 4 시간의 결과가

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !^_concrete 
RewriteRule ^(.*)$ _concrete/$1 [L,QSA] 

, 그래서 가까이해야 . 나는 당신의 훌륭한 마음 중 하나가 어리석은 실수를 지적하고 신속하게 휴식을 취하기를 바라고 있습니다. 시간 내 줘서 고마워!


부록 : 내가 이전 얼마 전에 .htaccess - alias domain root to subfolder 게시, 날이 시작되었다. 그것이 중복이라고 생각하는 함정에 빠지지 마십시오.

답변

1

문제가 가 %{REQUEST_FILENAME} 파일의 절대 시스템 경로를 포함, 내부 리디렉션 루프 (/ 홈/사용자/...)되지 URL 경로, 세 번째 조건은 상태가 요청 된 파일의 시작에 시스템 경로 _concrete은 결코 사실이 아닙니다. 무슨 재현

, 이제 (파일하지 않은) 요청이 /contact로 구성되어 예를 들어 가정 해 봅시다 : 이 URL이 모두 재 작성 조건을 패스하고 요청이 내부적으로 /_concrete/contact로 리디렉션되고, 지금 mod_rewrite를은 htaccess로를 다시 실행합니다 다시

그래서, 새 URL /_concrete/contact이 모든 조건을 전달합니다 (URL이 변경된 경우 L 플래그 석재는 현재 실행은 규칙이 새로운 URL로 다시 적용됩니다) 등 /_concrete/_concrete/contact과에 다시. .. 리디렉션 루프를 생성하고 Apache는 500 오류 메시지를 출력합니다

,210

이 문제를 해결하기 위해, 당신은 당신의 세번째 조건을 변경해야합니다 :

RewriteCond %{REQUEST_URI} !^/_concrete 
+0

아름다운 - 나는 두번을 받아 들일 수 있으면 좋겠다. 넌 너무 많은 고통을 덜어 줬어. 건배! – CodeMoose

+0

도움이 되었기 때문에 기쁘게 생각합니다. –

관련 문제