我有一个文件,从URL获取控制器和方法,当url中只有控制器它工作正常,但如果我将方法添加到URL它不会加载CSS或任何JS文件正确。
这是项目的文件夹。
这是.htaccess文件
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
# Send request via index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/?url=$1 [L]
</IfModule>
这是索引文件
class url{
public $controller = "home";
public $method = "default";
public $params = array();
function __construct(){
$url = $this->getUrl();
if (file_exists("../app/controller/".$url[0].".php")){
$this->controller = $url[0];
unset($url[0]);
}
require_once("../app/controller/".$this->controller.".php");
$this->controller = new $this->controller();
if(isset($url[1])){
if(method_exists($this->controller,$url[1])){
$this->method = $url[1];
unset($url[1]);
}
$this->params = $url ? array_values($url): [];
}
call_user_func([$this->controller,$this->method],$this->params);
}
function getUrl(){
if (isset($_GET["url"])){
$url = explode("/",$_GET["url"]);
return $url;
}
}
}
$url = new url();
这是控制器
class home{
function __construct(){
echo "hola";
}
function default(){
require_once("../app/views/home.php");
}
}
这是视图
<head>
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>Hey</h1>
</body>
答案 0 :(得分:0)
href="css/style.css"
你有一条相对路径。
浏览器将获取URL,从中删除查询和片段。删除最后/
之后的所有内容。然后追加路径。
您需要一个绝对路径,从/
开始。
href="/css/style.css"
浏览器将从当前URL中删除整个路径。不仅是最后一个/
之后的部分。