我们正在扩展一个网站,我们希望计划未来我们可能希望在子域中(或者甚至可能是一个单独的域,例如CDN)托管我们的图像。我们目前使用以下HTML在HTML / PHP代码中引用图像:
<img src="/images/ourlogo.jpg" alt="Our Logo" />
我正在考虑启动公司大会,以便:
<img src="<?php echo STAT_IMG;?>ourlogo.jpg" alt="Our Logo" />
其中STAT_IMG是一个全局PHP常量,最初定义为与当前情况相同,即
define('STAT_IMG', '/images/');
但稍后可以更改为:
define('STAT_IMG', 'http://www.superfastcdn.com/');
我会遇到任何问题吗?
我已经考虑过的事情:
STAT_IMG
定义为“无协议”来解决此问题,例如define('STAT_IMG', '//www.superfastcdn.com/');
。我希望他们的想法有效。
define('STAT_IMGS', 'https://www.example.com/images/');
和define('STAT_IMGNS', 'http://www.example.com/images/');
以及之前的非绝对版本(define('STAT_IMG', '/images/');
)。答案 0 :(得分:2)
听起来你需要的是一个函数 - 这就是在Rails,Symfony和Django这样的框架中处理它的方式。一般来说,封装逻辑是一个好主意,因此您不必为给定的设计更改而更新自己的位置。
对于初学者,您可以将其放在所有模板中通用的位置:
<?
$my_domain = "something.com";
function static_url($relative_path, $SSL=false) {
$prefix = $SSL ? 'https' : 'http';
return "{$prefix}://{$my_domain}{$relative_path}";
}
然后,你可以把它作为你的模板:
<img src="<?=static_url('images/ourlogo.jpg'); ?>" />
或者,如果您需要https:
<img src="<?=static_url('images/ourlogo.jpg', true); ?>" />