2014-01-24 2 views
4

/var/www/thesite (아파치 서버)에 호스팅 된 웹 사이트가 있는데,이 웹 사이트의 Symfony2 웹 사이트이므로 가상 호스트가 가리키는 web 폴더가 있습니다.htaccess URI를 상위 디렉토리로 리디렉션

그래서 내 가상 호스트 내가 잘 URL을 형식으로 .htaccess이이 웹 폴더에서 www.mysite.com -> /var/www/thesite/web

입니다.

이제 /var/www/thesite/api에 API를 추가했으며 Silex을 사용하여 API를 구현했습니다. 모든 요청 http://www.mysite.com/api을이 새 프레임 워크로 리디렉션하고 싶습니다.

그래서 나는 /var/www/thesite/web/.htaccess

RewriteCond %{REQUEST_URI} ^/api 
RewriteRule ^api(.*)$ ../api/web/index.php [NC,QSA,L] 

에 추가 한하지만 내가 얻을 :

잘못된 요청

브라우저가이 서버가 이해할 수 요청을 보냈습니다.

.htaccess의 상위 폴더에 액세스 할 수 있는지 확실하지 않습니다. 보안 위반을 피하기 위해 가상 호스트 대상 디렉토리를 변경하고 싶지 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

+0

왜 '/ var/www/thesite/web'에서'api '를 움직일 수 없습니까? – anubhava

+0

@anubhava 왜냐하면'web'는 공개적으로 접근 가능하기 때문입니다. 당신은 당신의 소스 코드에 접근하기를 원치 않는다. – maxwell2022

답변

3

/var/www/thesite/web 인 사이트의 문서 루트 외부로 으로 요청을 라우팅 할 수 없습니다. 따라서 디렉토리에서 /var/www/thesite/ 또는 /var/www/thesite/api에 액세스 할 수 없습니다. 400 잘못된 요청은 규칙 대상의 ../api/ 비트 때문입니다. 방금 포함하도록 PHP를 사용하고 시도 할 수 있습니다

뭔가/API의 index.php에 필요합니다

RewriteRule ^api/(.*)$ /index_api.php [L] 

와의

index_api.php 포함하거나 "../api/web/index을 요구할 수 있습니다. PHP "파일.

+0

이것이 허용되지 않는 것이 좋습니다! – Phuong

관련 문제