此问题涉及我在上一个问题中提供的相同CMS和文件:PHP Local CMS CSS Error。
此刻我很困惑。如果我访问http://localhost/cms/admin CSS和JS使用href(CSS)http://localhost/cms/includes/admin/CSS/panel.pages.css完美执行。但是,当我访问http://localhost/cms/admin/时(最后添加了/
),href变为http://localhost/cms/admin/includes/admin/CSS/panel.pages.css。
网站的任何链接都会通过.htaccess重定向到index.php:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /cms/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
</IfModule>
在index.php文件中,URL受到控制。如果路径以admin开头,则包含admin.main.php。
if (isset($_SERVER['PATH_INFO'])) {
$request_url = $_SERVER['PATH_INFO'];
while (substr($request_url, -1) == '/') {
$request_url = rtrim($request_url, '/');
}
$explode_url = explode('/', $request_url);
if (isset($explode_url[1]) && $explode_url[1] == 'admin') {
require('includes/admin/admin.main.php');
}
}
admin.main.php控制请求是/ admin / pages,如果是,则控制另一个文件。
global $request_url;
if ($request_url == '/admin/pages') {
require('includes/admin/panel/panel.pages.php');
}
在panel.pages.php的头部:
<?php
echo <link rel='stylsheet' type='text/css' href='includes/assets/fonts/Roboto/Roboto-Thin.ttf');
echo <link rel='stylsheet' type='text/css' href='includes/admin/CSS/panel.pages.css'>
?>
编辑:我对此解决方案并不感到不满,如果您对其他方法有任何建议,请分享。
答案 0 :(得分:0)
我猜你的html:
<link href="../includes/admin/CSS/panel.pages.css">
所以当你在这里时:http://localhost/cms/admin
..
告诉它上升一级(至http://localhost/cms/
),然后添加includes/admin/CSS/panel.pages.css
,为您提供http://localhost/cms/includes/admin/CSS/panel.pages.css
。
当你在这里时:http://localhost/cms/admin/
,它会把它视为http://localhost/cms/admin/index
..
告诉它上升一级(至http://localhost/cms/admin/
),然后添加includes/admin/CSS/panel.pages.css
,为您提供http://localhost/cms/admin/includes/admin/CSS/panel.pages.css
。
最佳做法(IMO)是不使用(完全?)相对路径 - 您的CSS href
应始终以/
开头,以便它相对于文档根目录。
<link href="/cms/includes/admin/CSS/panel.pages.css">
答案 1 :(得分:0)
我相信我已经通过您的解决方案和谷歌的组合解决了这个问题。使用绝对路径是一个不错的选择,但由于CMS必须与各种文件夹和网站目录结构兼容,我不得不稍微更改该解决方案。在index.php(包括其他所有文件)的乞求中,我补充道:
$base = rtrim(rtrim($_SERVER['PHP_SELF'], $_SERVER['REQUEST_URI']), 'index.php');
在我的情况下,返回/cms/
。
在包含的panel.pages.php中,href
和src
然后使用以$base
变量开头的绝对路径。这使其与任何网站结构兼容。
如果我对此解决方案有误,请纠正我。