重定向到另一个目录

时间:2012-01-22 16:13:48

标签: php html .htaccess

我的网站几乎已启动并运行,但在原始代码中有例如img src="/design/pic1.png"等等。在真实服务器上,有一个必须目录web,所以新路径应该是img src="web/design/pic1.png",但我不想重写所有路径。 还有其他选择吗?

1 个答案:

答案 0 :(得分: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_DEVENV_PROD的内容完全取决于您。

一种方法是根据域检测它(使用$_SERVER['HTTP_HOST']has some caveats)。

另一种方法是在您的Web配置中初始化它。假设您使用的是Apache2,则可以使用SetEnv指令。

httpd.conf

SetEnv MY_ENVIRONMENT DEV

您可以使用以下方式在PHP中访问:

<?php

    $_SERVER['MY_ENVIRONMENT'];

    // or...

    getenv("MY_ENVIRONMENT");

?>