2014-12-18 3 views
0

나는 모든 HTTP 요청이 아닌 다른 로컬 디렉토리로 이동하려고 노력하고를 사용하여 DocumentRoot에 재배치 곳을 DocumentRoot 포인트 :.htaccess 파일

웹 서버 설정 :

<VirtualHost 1.2.3.4:80> 
DocumentRoot /local/home/me/example.com 
ServerName example.com 

그러나, 이 사이트에 대한 전체 (PHP) 코드의 DocumentRoot에서가 아니라 오히려 하위 디렉터리에 : 현재

/local/home/me/example.com/code/ 

, 사이트에 액세스하기 위해, 나는를 포함하는 URL을 사용해야합니다subdir. 나는 그걸 없애기 위해서 http://example.com/ 액세스 /local/home/me/example.com/code/

올바른 방법은 DocumentRoot가 하위 디렉토리를 가리키는 것임을 이해합니다. 내 웹 주최자는이 설정을 변경하지 않겠습니다. 사실, DocumentRoot를 설정할 수있는 개인 웹 서버에서이 사이트를 호스팅했을 때 이전에 가지고 있었던 방식입니다.

이제이 파일을 .htaccess 파일에 다시 쓰면됩니다. 나는 방법을 이해하지 못한다. 특히

내 질문에,이에 대한 재 작성 규칙은 무엇

  • ?
  • 나는 모든 경로에 대해 하나의 htaccess로 파일을 만들거나 내가 하위 디렉터리에 하나씩 (있어야 할 수 있습니다 예를 들어 하위 디렉토리는 /code/ 내부에있다 - 그들은 각 개별 htaccess로 파일이 필요 할

답변

1

당신이 할 수있는? 당신의 /local/home/me/example.com/.htaccess 파일에이 코드를 사용합니다.

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^((?!code/).*)$ code/$1 [L,NC] 

(?!code/) 요청이 이미 /code/로 시작하지 않고 조건에 해당하는 경우이 추가됩니다 있는지 확인합니다 부정적 예측이다 t에 대한

+0

감사합니다 그는 규칙이 실제로하는 것을 설명합니다. 슬프게도 내부 오류 500이 발생합니다. 서브 디렉토리에는 자체적으로 재 작성 규칙이 있으므로 어떻게 든 충돌합니다. 나는 계속 부탁 할게. 이 답변은 여전히 ​​다른 사람들을 도울 수 있습니다. –

+0

'/ code/.htaccess'는 중요하지 않습니다. 500 오류에 대해서는 항상 아파치 error.log를보고 실제 오류가 무엇인지 확인하십시오. – anubhava