如何将我的JS和CSS文件放在公用文件夹之外?我有一个图书馆,我希望我的所有网站都可以使用,并且为了便于更新,请将它放在特定网站的公共文件夹之外,以便所有人都可以轻松阅读。这是可能的还是我需要在另一个域上托管它(我宁愿不放心)。
htaccess可能吗?
答案 0 :(得分:2)
正确扩展Jamie Wong的回应:
您可以使用充当控制器的PHP文件轻松完成此操作 - 但您还必须记住发送正确的内容标题,否则浏览器可能无法识别CSS的内容。
您还需要进行一些安全检查,以确保没有文件遍历
// /public_html/style.php
$cssDir = realname(dirname(__FILE__) . '/../css/';
if (!isset($_GET['sheet'])) {
header('HTTP/1.1 404 Not Found');
exit;
}
$file = realpath($cssDir . $_GET['sheet'] . '.css');
if (!$file) {
header('HTTP/1.1 404 Not Found');
exit;
}
if (substr($file, 0, strlen($cssDir) != $cssDir) {
// because we've sanitized using realpath - this must match
header('HTTP/1.1 404 Not Found'); // or 403 if you really want to - maybe log it in errors as an attack?
exit;
}
header('Content-type: text/css');
echo file_get_contents($file);
exit;
您可以更进一步,并设置.htaccess重写以将/css/main.css等CSS请求映射到此控制器:
RewriteEngine On
RewriteRule ^css/(*.).css$ /style.php?sheet=$1 [L]
答案 1 :(得分:1)
你可以通过让代理人为你抓取文件,以一种尴尬的方式做到这一点。
你可以有一个php文件作为这些脚本的占位符,如下所示:
www.example.com/style.php?sheet=main
读取
中的文件 /home/your_user/main.css
通过file_get_contents
警告强>
非常确保style.php脚本无法访问您指定的文件夹之外的任何内容。这可能是一个巨大的安全漏洞
答案 2 :(得分:0)
不同的域/网站将起作用。 Web服务器不可能提供不在公用文件夹中的内容..您可能想要创建虚拟主机
答案 3 :(得分:0)
Web浏览器将请求JS和CSS文件。换句话说,浏览器不了解您的服务器目录结构......它只需要一个有效的URI。
最简单的解决方案是设置子域名:mycdn.example.com并将您的JS和CSS文件放在那里并直接引用每个站点。