2012-01-22 114 views
1

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

+4

即使你拥有服务器的所有那些路径改写为较新的版本,这应该只是暂时的修复,你不应该指的是不存在的路径,因为你不想去改变它们。做正确的事情,并使用一个好的编辑器,可以用正则表达式进行搜索和替换,并用正确的替换路径。 (另外,我觉得奇怪的是,在你的网站目录中你有一个“web”文件夹 - 对我来说似乎是多余的。) –

回答

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,完全是ü p给你。

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

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

在你httpd.conf

SetEnv MY_ENVIRONMENT DEV 

,你可以在PHP中使用访问:

<?php 

    $_SERVER['MY_ENVIRONMENT']; 

    // or... 

    getenv("MY_ENVIRONMENT"); 

?> 
+0

多数民众赞成在很好,以及如何处理.css文件中的文件? –

+1

这是一个棘手的问题。我倾向于将与CSS文件相关的图像放置到CSS目录中。所以,如果我有'$ WEB_ROOT/css/style.css',我会创建'$ WEB_ROOT/css/images /',然后用CSS的相对路径引用图像。 'images/foo.png',而不是'/ something/something/css/images/foo.png'。或者,如果您知道您的CSS目录始终远离您的web根目录,您可以执行'../ images/foo.png'。 – gpmcadam

相关问题