我想知道是否有一个预先存在的 PHP 函数将重写给定的 URL,添加预定义的应用程序上下文。例如:我有一个这样的链接:
<a href="/">Home</a>
我希望这个链接在生产环境下指向“/”,但在开发环境下它应该指向“/app_context/”。是否有任何 PHP 函数可以为我做到这一点?
您始终可以通过更改生产卷的文档根目录来更改生产服务器上的服务器配置以匹配实时服务器(除非您在像 Bluehost 或类似的共享主机上)。这也有例外......示例:
BluehostDomain1.com
根是/
如果您使用 bluehost 托管第二个域,则它是第一个域的子目录(并且可访问)。
BluehostDomain2.com
root/
默认情况下,也可以在/BluehostDomain1.com/BluehostDomain2.com
.
在这些情况下,我会这样做:
使代码查找执行它的域:
<?php
switch ($_SERVER['SERVER_NAME']){
case "production.server.com":
$dR = '/';
break;
default:
//Dev server dev.server.com
$dR = '/app_context/';
}
$code = '<a href="$dR">Home</a>';
$code .= '<a href="'.$dR.'about/">About</a>'; // /about/
echo $code;
?>
我通常定义一个 WEBROOT 常量来保存这个值,然后将它添加到所有链接:
define('WEBROOT', str_replace('//', '/', dirname($_SERVER['SCRIPT_NAME']) . '/'));
<a href="<?php echo WEBROOT ?>">Home</a>
<a href="<?php echo WEBROOT ?>about/">About</a>
问题解决了。我意识到我可以只使用相对路径。例如:
<a href="./index.html">Home</a>
你可以使用类似的东西:
<?php
if(/* test for developement environement */) {
echo '<a href="/app_context/">Home</a>';
}
else {
echo '<a href="/">Home</a>';
}
?>