2012-01-22 2 views
1

내 사이트는 거의 실행 중이지만 원본 코드에는 예를 들어 img src="/design/pic1.png" 등이 있습니다. 실제 서버에는 반드시 필요한 경로 인 web이 있으므로 새 경로는 img src="web/design/pic1.png"이어야하며 모든 경로를 다시 작성하고 싶지는 않습니다. 다른 옵션이 있습니까?다른 디렉토리로 리디렉션

+4

를 서버가 최신 버전으로 모든 경로를 다시 작성할 경우에도, 즉 일시적인해야한다 문제를 해결하고 변경하기를 원하지 않기 때문에 존재하지 않는 경로를 언급해서는 안됩니다. 올바른 작업을 수행하고 정규 표현식으로 검색하고 바꿀 수있는 올바른 편집기를 사용하고 올바른 경로로 바꿉니다. (또한, 나는 당신의 웹 사이트 디렉토리 안에 "웹"폴더가 있다는 것이 이상하다는 것을 알게된다. –

답변

1

설정에 따라 한 가지 방법은 환경에 따라 기본 경로를 결정하는 상수를 사용하는 것입니다.

예를 들어, $WEB_ROOT . "/design/"에있는 모든 이미지를 넣어 드리겠습니다,하지만 프로덕션 환경에이 $WEB_ROOT . "/web/design/"있어, 다음과 같은 뭔가 끝낼 수 있습니다 개발 환경에서 가정 : 다음

<?php 

    // initialise stuff for development 
    if(ENVIRONMENT == ENV_DEV) { 

     define("BASE_PATH", "/"); 

    // initialise stuff for production 
    } elseif(ENVIRONMENT == ENV_PROD) { 

     define("BASE_PATH", "/web"); 

    } 

?> 

, 당신의 HTML에, 당신과 같이이 BASE_PATH 상수를 사용할 수 있습니다

<img src="<?=BASE_PATH;?>/design/pic1.png" /> 

당신이 ENV_DEV이 예에서는 ENV_PROD 무엇인지를 결정하는 방법, 전체 유입니다 너에게.

하나의 방법은 도메인을 기반으로 감지하는 것입니다 ($_SERVER['HTTP_HOST'], 어느 has some caveats 사용).

또 다른 방법은 웹 구성에서이를 초기화하는 것입니다. Apache2를 사용한다고 가정하면 SetEnv 지시문을 사용할 수 있습니다. 에서

당신의 httpd.conf : 사용 PHP에서 액세스 할 수

SetEnv MY_ENVIRONMENT DEV 

:

<?php 

    $_SERVER['MY_ENVIRONMENT']; 

    // or... 

    getenv("MY_ENVIRONMENT"); 

?> 
+0

위대한 파일이고 .css 파일의 파일은 어떨까? –

+1

그건 까다 롭습니다. CSS 파일 * 관련 * 이미지를 CSS 디렉토리에 배치하는 경향이 있습니다. 그래서,'$ WEB_ROOT/css/style.css'을 가지고 있다면'$ WEB_ROOT/css/images /'를 만들고 CSS의 이미지를 상대 경로 (예. '/ something/something/css/images/foo.png'보다는'images/foo.png'를 사용하십시오. CSS 디렉토리가 웹 루트에서 항상 1 레벨 떨어져 있다는 것을 안다면'../ images/foo.png'를 할 수 있습니다. – gpmcadam

관련 문제