这个问题与我在上一个问题中提供的相同 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'>
?>
编辑:我对这个解决方案并不完全不满,如果您对其他方法有建议,请分享。
最佳答案
我猜你在你的 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">
关于php - 404 not found - CSS 和 JS 当 url 以/结尾时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47104820/