我正在开展一个项目。这是一个管理网站的控制面板。 文件夹结构如下:
我在配置文件中设置了一些设置,其中一些是:
$site_url = $_SERVER['SERVER_NAME'];
define ('ABSPATH', 'http://'.$site_url.'/cpanel');
所以,我的问题是:如何相对于ABSPATH
常量和所有<a>
标记加载所有资源(图像,css,js)?
有了这个,我可以将“cpanel项目”移动到其他目录级别,它仍然可以工作。像Wordpress博客一样,只设置博客URL ..
答案 0 :(得分:2)
你不能在php视图中做这样的事吗?
<script type="text/javascript" src="<?= ABSPATH ?>/my_js_file.js"></script>
<link rel="stylesheet" type="text/css" href="<?= ABSPATH ?>/my_css_file.css">
<img src="<?= ABSPATH ?>/my_image_file.jpg" />
这样,您可以将目录移动到docroot中的任何位置,只需更改配置文件中ABSPATH
的值。
答案 1 :(得分:2)
您可能最好定义几个不同的变量,因为URL不会对包含等有用。你可以这样做:
DEFINE(HOST_NAME, $_SERVER['SERVER_NAME']);
DEFINE(WEB_SERVER_ROOT, $_SERVER['DOCUMENT_ROOT']);
DEFINE(APP_ROOT, __DIR__);
DEFINE(URI_BASE, str_replace(WEB_SERVER_ROOT, '', APP_ROOT);
if ($_SERVER['HTTPS'] == 'on') {
DEFINE(PROTOCOL, 'http');
} else {
DEFINE(PROTOCOL, 'https');
}
DEFINE(URL_BASE, PROTOCOL . '://' . URI_BASE);
对于包含,您可以执行以下操作:
include(APP_ROOT . '/modules/somefile.php');
要输出图片,javascript,css等链接,您可以使用以下内容:
<img src="<?php echo URL_BASE; ?>/images/someimage.jpg" />
<a href="<?php echo URL_BASE; ?>/somepage">Some Page</a>
<script type="text/javascript" src="<?php echo URL_BASE; ?>/js/somejs.js" />
答案 2 :(得分:0)
有几种方法可以做你所说的,但最简单的一种方法是使用BASE标签。
<head>
<base href="http://www.yoursitewithimages.com/folder-with-files/" target="_blank">
</head>
然后你可以使用
<img src="img/image.jpg">
,它将被视为
<img src="http://www.yoursitewithimages.com/folder-with-files/img/image.jpg">
此处有更多信息http://www.w3schools.com/tags/tag_base.asp或此处http://www.w3.org/TR/html-markup/base.html
答案 3 :(得分:0)
这是基于Mike Brant解决方案的替代方案。
//APP_ROOT and APP_BASE assumes that the current location of this
//script is located in the root of your application.
//Also assumes that the HOST_NAME is what you want in the URL.
//See https://php.net/manual/en/reserved.variables.server.php for reference
define('HOST_NAME', $_SERVER['HTTP_HOST']);
(empty($_SERVER['HTTPS'])) ? define('PROTOCOL', 'http') : define('PROTOCOL', 'https');
define('WEB_SERVER_ROOT', $_SERVER['DOCUMENT_ROOT']);
define('APP_ROOT', __DIR__);
$appBase = str_replace(pathinfo(__FILE__, PATHINFO_BASENAME), '', $_SERVER['SCRIPT_NAME']);
define('URL_BASE', PROTOCOL . '://' . HOST_NAME . $appBase);