2014-05-13 1 views
0

공용 파일에 "web"디렉토리가있는 silex를 사용하고 싶습니다. 내가 ./myInstallationPath/file.php가해야 파일을 요청하는 경우htaccess : silex/symfony 및 웹 디렉토리 리디렉션 사용

  • :이 작업을 수행하는 htaccess로 스크립트를 가지고 싶습니다 그래서

    -project 
    --vendor 
    ----silex 
    ----... 
    --web 
    ----index.php 
    --.htaccess 
    

    : 같은 구조는 볼 것이다 파일이 ./myInstallationPath/web/ 안에 있는지 확인하고, 그렇다면 내부로 리디렉션하십시오. 그렇지 않으면 내부 리다이렉트가되어야합니다 ./myInstallationPath/web/index.php

  • ./myInstallationPath/web/을 요청하면 사용자가 "웹"을 볼 수 없도록 URL에서 "web /"을 제거해야합니다. 예배 규칙서. 그런 다음 위의 요점을 사용해야합니다. 프로젝트의 경로가 루트뿐만 아니라 하위 폴더가 될 수 있기 때문에

, 설치 경로는 다음과 같은 방법으로 같이 결정 수 :

RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$ 
RewriteRule ^(.*)$ - [E=INSTALLATION_ROUTE:%1] 

를이 기존 코드 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/%{ENV:INSTALLATION_ROUTE}web/$1 !-f [NC] 
RewriteCond %{DOCUMENT_ROOT}/%{ENV:INSTALLATION_ROUTE}web/$1 !-d [NC] 
RewriteRule (.*) %{ENV:INSTALLATION_ROUTE}web/index.php [L] 

파일이 web/안에 존재하지 않는지 확인합니다. 그렇다면 index.php로 리디렉션됩니다. 요구 사항을 충족하기 위해 다른 규칙은 어떻게 표시되어야합니까?

답변

0

Apache 가상 호스트를 사용하는 것이 좋습니다. 내 프로젝트 구조가 너처럼 보인다. 나는 가상 호스트를 생성하여 http.conf에서 이것을 사용

<VirtualHost localhost:80> 
    ServerAdmin localhost 
    DocumentRoot "c:/apachefolder/htdocs/" 
    ServerName localhost 
    ServerAlias localhost 
</VirtualHost> 

<VirtualHost localhost:80>  
    DocumentRoot "C:/apachefolder/htdocs/mysilexproject/web" 
    ServerName myproject.dev 
    ServerAlias myproject.dev 
</VirtualHost> 

은 내가 처음에 여전히에서 VirtualHost를 사용하기 전에 같은 다른 사이트에 액세스 할 수있는 로컬 호스트를 추가했다.

일단 VHost를 만들었 으면 프로젝트에 사용한 더미 도메인을 시스템 호스트 파일로 설정해야합니다.

<IfModule mod_rewrite.c> 
    Options -MultiViews 

    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [QSA,L] 
</IfModule> 

마지막

를 다시 시작 : 대부분의 리눅스 배포판 내 프로젝트의 web 디렉토리에 다음과 같습니다 내 .htaccess 파일을 넣어이 후

용 Windows C:\Windows\System32\drivers\etc

/etc/hosts의 경우

구성 변경 사항을 적용하려면 아파치를 사용하십시오. 이제 http://myproject.dev

+0

을 사용하여 사이트에 액세스 할 수 있습니다. http.conf에 액세스 할 수 있으면 액세스 권한이 없지만 문서 루트를 변경하지 않아도됩니다. – user3631654

+0

다음과 같이 생각됩니다. 유용한 정보 http://stackoverflow.com/a/20605956/3682741 – angeldelrio