从开发移动到实时时更改所有URL

时间:2013-04-23 12:57:59

标签: php html

我确信这是一个转贴,但我找不到与我想要找到的问题相同的问题。基本上,每当我离线工作时,我在网站上使用的所有URI都会引用离线位置,例如127.0.0.1/home.html但是,当我上传网站时,这些URI需要更改为其等效项,例如示例。 com / home.html我要么需要浏览所有页面并更新这些引用,要么使用一些php在每个使用地址的位置插入正确的地址。在那一刻我使用的是这样的东西:

每页顶部:

<?php $offline = false; ?>

链接:

<a href="<?php echo ($offline ? '127.0.0.1' : 'example.com'); ?>/home.html">Home</a>

但这似乎是一种很难实现应该相对简单的方法。保持这些参考资料的最新标准方法是什么。我考虑过在所有地方使用相对链接,但事实证明存在问题(例如视图包含无法正常工作),我尝试将base href设置为主页,但这会引发其他问题。

非常感谢任何建议。感谢。

4 个答案:

答案 0 :(得分:1)

$server=$_SERVER['SERVER_ADDR'];
// Local
if(strstr($server,'127.0.0'))
{
    define('ROOT_PATH','http://127.0.0.1/');
}
// Server
else
{
    define('ROOT_PATH','http://www.yoursite.com/');
}

将此代码放在php文件中,包含在每个页面中

然后:

<a href="<?php echo ROOT_PATH?>/home.html">Home</a>

在这种情况下,您也可以将文件放在文件夹中,例如:

define('ROOT_PATH','http://www.yoursite.com/mysite/');

答案 1 :(得分:0)

正如Waygood建议的那样,听起来你需要将路径从绝对路径更改为站点根目录相对路径或相对路径。示例:如果使用站点根相对,则127.0.0.1/home.html将变为/home.html。或者,如果您必须包含绝对路径,则可以在服务器上设置环境变量,或者在表示环境类型的PHP常量上设置环境变量,并根据此值切换链接。使用环境变量具有额外的好处,即能够在开发和生产机器上保持完全相同的代码库,而不必求助于主机或IP检测。以下是我使用的zend framework的文档指南中的一个示例:

defined('APPLICATION_ENV') || define('APPLICATION_ENV',
    (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

来自:http://framework.zend.com/manual/1.12/en/zend.application.quick-start.html

答案 2 :(得分:0)

另一种方法是使用相对路径。

对于您使用./的同一目录中的文件,对于该目录上的文件使用../这适用于HTML中的锚点,需要并包含在PHP中。

答案 3 :(得分:0)

我发现解决此问题的一种巧妙方法是修改您的HOSTS文件,使其将example.com指向127.0.0.1,以便您可以在任何地方引用example.com,但重定向到127.0.0.1,直到您的发展已经完成。