我在根目录中有一个htaccess文件,它将页面的每个请求重定向到特定文件:
RewriteCond %{REQUEST_URI} !^/loader.php(.*)?$ [NC]
RewriteRule ^(.*)$ /loader.php?url=$1 [QSA,L]
现在loader.php
include($_SERVER['DOCUMENT_ROOT'] . '/' . $_GET['url']);
我只是包含了网址,例如admin/index.php
。
如果我保留代码,加载器将包含文件并打印正确的HTML,但它不会加载任何CSS或JS脚本。如果我放echo "test";
就在include之前,加载器将加载CSS文件。这是杀了我的东西。我是否必须在HTTP标头中指定一些内容?
我已经尝试将<base url="" />
放在index.php
的标题中,但没有结果,
但另一个奇怪的事情是,如果我检查页面并点击链接,我会看到正确的CSS。
更新1
我打印了headers_list();
。我注意到一件事 - 当我在echo
中打印headers_list
时,数组会显示内容类型,因此我尝试使用header()
函数自行添加它,但没有结果。仍在努力。
更新2
我注意到了另一件事;如果我将一个<style></style>
标记与一些CSS放在一起它会正常工作,但如果我使用<link />
标记则不行。这没有任何意义。
答案 0 :(得分:2)
您必须为css和javascript(以及图片等)发送正确的MIME标头。 最简单的是让apache处理这些请求。将所有CSS,JS和图像放在名为“assets”的文件夹中,然后将htaccess更改为
RewriteCond %{REQUEST_URI} !^/assets/
RewriteCond %{REQUEST_URI} !^/loader.php(.*)?$ [NC]
RewriteRule ^(.*)$ /loader.php?url=$1 [QSA,L]