我正在运行XAMPP for Mac。
当我第一次开始使用PHP时,我会用变量定义我的目录:
$root = "http://localhost/~aaron/SiteFolder/"; // Dev
$root = "http://www.sitename.com/"; // Live
这会有效,但根据我是否正在编辑开发网站或实时网站,这是一个很大的烦恼,不得不评论一个。
我正在慢慢过渡到OOP习惯,并希望尽可能提高效率。所以我试图用当前目录定义ROOT,如下所示:
define("ROOT", dirname( __FILE__ ) . DIRECTORY_SEPARATOR);
输出:
/Users/aaron/Sites/SiteFolder/
当我在开发网站上工作时,这对我来说并不完全有用,因为我希望能够使用ROOT
作为我的图像,文件等的前缀。
这显然不起作用:
<img src="/Users/aaron/Sites/SiteFolder/images/charizard.png">
如何解决此问题以正确定义目录,我需要做些什么?
答案 0 :(得分:0)
由于这是图片代码的网址,您不能只将图片根目录定义为define('ROOT', '/images/')
吗?
目前您正在获取目录路径。
编辑:
抱歉,我误解了这个问题。假设您正在讨论要链接到的网络服务器上的图像等公共资源。
然后你可以将你的root定义为你的基本网址吗?
define('ROOT', 'http://localhost/')
或
define('ROOT', 'http://dev.sitename/')
或
define('ROOT', 'http://localhost/testsite/')
答案 1 :(得分:0)
,config.php文件中有一个配置变量:
$config["base_path"] = "/projects/mysite/"; //relative to http://localhost
并且有一个辅助函数:
function base_url(){
return $config["base_path"];
}
并在您的网址中使用它
如果你使用smarty:
<img src="{base_url()}assets/images/1.jpg">
或直接php:
<img src="<?php echo base_url();?>assets/images/1.jpg">
当您将网站上传到网络时,只需将基本网址更改为:
$config["base_path"] = "/";
再次全部工作。
答案 2 :(得分:0)
根据您在我的其他答案中的评论,您可以这样做:
您可以创建一个简单的安装页面,并询问用户他们计划托管您的网络应用的网址。
然后你可以在数据库或其他东西中设置这个变量。
许多网络应用程序都这样做:Wordpress,Joomla浮现在脑海中。
编辑:
您还可以尝试使用php $ _SERVER变量构建网址。您可以获取主机端口来构建URL。
不幸的是,如果某人决定将您的网络应用程序托管在子域名域的根目录之外,则可能会出现问题。
像'http:// domain / yourwebapphere /'
之类的东西如果没有用户指定,您将无法检测到它。如果您使用单个端点并使用htaccess重定向网址,则仍需要在htacess中指定一个基本网址,以便正确重定向。
EDIT2:
好的,如果你真的想动态创建url,这里有一些关于如何做的psuedo代码。
$protocol = parse_server_protocol($_SERVER['server_protocol']);
$port = $_SERVER['port']
$host = $_SERVER['server_name'];
//For use case where the app is not hosted at root of domain ("http://domain.com/test") for example
$urlroot = parse_root($_SERVER["REQUEST_URI"]);
$siteurl = buildRootUrl($protocol, $port, $host, $urlRoot);
//Now save that root url in the database.
如果您使用htacess创建干净的网址,您的应用程序需要知道如何在不在域根目录下托管的实例中编写baseurl。