2009-08-28 4 views
2

환경 : Apache 2는 Mac OS X Leopard와 함께 제공됩니다. 기본 httpd.conf에는 큰 변화가 없습니다.mod_rewrite에서 상대 URL 사용

.htaccess를 통해 몇 가지 재 작성을 설정 중이지만 현재 디렉토리와 관련된 대상 경로를 사용할 수 없습니다.

# URL: http://localhost/~davis/rewrite/.htaccess 
# File: /Users/davis/Sites/rewrite/.htaccess 

RewriteRule go.php target.php 

# Not working 

사용자를 http://localhost/~davis/rewrite/target.php (으)로 리디렉션 할 것으로 예상됩니다. 정확한 물리적 경로로 해결되지만 경로 /Users/davis/Sites/rewrite/target.php이 존재하지 않는다는 404라는 메시지를 보냅니다.

전체 URL을 제공하면 모두 잘 작동합니다.

# URL: http://localhost/~davis/rewrite/.htaccess 
# File: /Users/davis/Sites/rewrite/.htaccess 

RewriteRule go.php /~davis/rewrite/target.php 

# Works 

여기에 뭔가가 빠졌습니까? httpd.conf에 설정해야 할 것은 무엇입니까?

감사합니다.

편집 : 내 라이브 Linux 서버에서 상대 URL이 올바르게 작동하고 있습니다. 로컬 Mac 상자에 문제가 있습니다.

답변

1

마지막으로 해결되었습니다.

내 ~/사이트 디렉토리에 DocumentRoot을 설정하거나 해당 경로에 VirtualHost을 만들면 작업이 시작됩니다. 분명히 사용자 디렉토리 설정에서 Apache는 실제 경로를 ~username 별칭으로 매핑 할 수 없었습니다.

의견을 보내 주셔서 감사합니다.

+0

그 해결책을 더 자세히 설명 할 수 있습니까? – jnthnclrk

+0

기본적으로 URL http : // localhost/~ davis /를 사용하여 로컬 사이트에 액세스합니다. 여기서 davis는 내 사용자 이름입니다. 그러나이 설정에서는 상대적 RewriteRules를 사용할 수 없었습니다. 을 DocumentRoot "/ 사용자/데이비스/사이트" 을 그리고이 문제를 해결 : 내가했던 것은 바로 나의 위치를 ​​가리 키도록 아파치의 httpd.conf에서 DocumentRoot의 설정을 변경하기위한 것이었다는 폴더. 이제 http : // localhost /에서 직접 내 로컬 사이트에 액세스하고 있습니다. conf 파일은/etc/apache2/ 에 있습니다. 다음 설명이 도움이 되길 바랍니다. :) –

1

는 기본 URL 조정 해보십시오 :

RewriteBase /~davis/rewrite/ 
+0

Gumbo 제안에 감사드립니다. 하지만 내 목표는 .htaccess가 앱이 설치된 서버 디렉토리와 독립적으로 만드는 것입니다. RewriteBase를 사용하고 있다면 우리는 여전히 올바른 디렉토리로 설정해야합니다. 반면에 URL을 현재 디렉토리에 상대적으로 줄 수 있다면 문제를 해결할 수 있습니다. –

0

당신은 RewriteBase를 시도 할 수 있습니다,하지만 내가 생각하지 않는 것보다 다른 당신이 할 수있는 일이있다.

RewriteBase /~davis/rewrite/ 
+0

사실 리눅스 서버와 로컬 Windows 상자에서 상대 경로가 올바르게 작동하고 있습니다. 이것이 사용자 디렉토리가 설정되는 방식과 관련이 있는지 궁금합니다 (~ davis 등). –