2010-04-01 4 views
0

나는 공유 서버에 심포니를 설치하기 위해 노력하고있어 및 httpd.conf에 명령을 복제하려고 시도하고있다 :.htaccess equivalent of baseurl?

# Be sure to only have this line once in your configuration 
NameVirtualHost 127.0.0.1:8080 

# This is the configuration for your project 
Listen 127.0.0.1:8080 

<VirtualHost 127.0.0.1:8080> 
    DocumentRoot "/home/sfproject/web" 
    DirectoryIndex index.php 
    <Directory "/home/sfproject/web"> 
    AllowOverride All 
    Allow from All 
    </Directory> 

    Alias /sf /home/sfproject/lib/vendor/symfony/data/web/sf 
    <Directory "/home/sfproject/lib/vendor/symfony/data/web/sf"> 
    AllowOverride All 
    Allow from All 
    </Directory> 
</VirtualHost> 

내가 htaccess로

리디렉션 부분이 이루어졌다 사용하여 그렇게 할 필요를 루트는 다음과 같은 사용 :

RewriteBase/
012 : 별명에 대한

Options +FollowSymlinks 
RewriteEngine on 
rewritecond %{http_host} ^symfony.mysite.ca [nc] 
rewriterule ^(.*)$ http://symfony.mysite.ca/web/$1 [r=301,nc] 

, 내가 사용하려고했습니다

하지만 성공하지 못했습니다.

주된 문제는/web 폴더에있는 index.php 파일이 이미지와 스크립트의 경로에/web 경로를 사용한다는 것입니다. 그래서 그 대신

href="/css/main.css" //this would work 

의 그것은

href="/web/css/main.css" //this doesn't work, already in the /web/ directory! 

모든 아이디어를 사용? 감사!

답변

0

당신은 사용할 수 있습니다 ...

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

따라서 URL에 두 번째 /web을 추가하는 일반 재 작성을 방지, 재 작성되는 실제 파일을 참조 URL을 방지하기 위해.

+0

팁을 주셔서 감사합니다.하지만 여전히 약간 혼란 스럽습니다. 위 예제를 사용하여 파일이 존재하지 않는지 확인할 수 있음을 이해합니다. 어떤 RewriteRule을 사용할 수 있습니까 : 1. 찾으려는 파일이/web 으로 시작하는지 확인하십시오. 2. 경로를 동일한 경로로 바꾸되 시작 부분에서/web을 자릅니다. 그럴 수 있습니까? –

+0

'/ web/css/main.css'는 * 절대 경로입니다 -'/ web' 디렉토리의 파일에서 참조되는 경우에도'/'로 시작하므로 문서 루트를 기준으로로드됩니다 그 안에는 하위 디렉토리가 없습니다. 따라서 문제는 실제로 경로에서 */web을 제거 할 필요가 없다는 것입니다. 대신에 이미 적절한 파일을 가리키고있는 경우 트리거가 발생하지 않도록 재 작성을 방지하십시오. 따라서 경로가 이미 올바른 경우 재 작성을 방지하기 위해 조건을 제안합니다. – Amber

+0

감사합니다. 그것은 물건을 깨끗이합니다. –