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