如何将我的JS和CSS文件放在公用文件夹之外?我有一个图书馆,我希望我的所有网站都可以使用,并且为了方便更新,请在特定网站的公用文件夹外部进行更新,以便所有人都可以轻松阅读。这是可能的还是我需要将其全部托管在另一个域上(我宁愿不放心)。我可以将JS和CSS放在公用文件夹之外吗?
htaccess可能吗?
如何将我的JS和CSS文件放在公用文件夹之外?我有一个图书馆,我希望我的所有网站都可以使用,并且为了方便更新,请在特定网站的公用文件夹外部进行更新,以便所有人都可以轻松阅读。这是可能的还是我需要将其全部托管在另一个域上(我宁愿不放心)。我可以将JS和CSS放在公用文件夹之外吗?
htaccess可能吗?
要在杰米黄的响应适当扩大:
您可以轻松地做到这一点使用充当控制器的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]
不同的域名/网站将工作。 网络服务器不可能发布一些不在公共文件夹中的东西..你可能想要创建一个虚拟主机
用Apache重写模块和正确的控制器逻辑,你可以很容易地做到这一点 – HorusKol 2010-06-22 23:28:15
你可以用一种尴尬的方式做到这一点,为你。
你可以有充当这些脚本像这样的占位符的PHP文件:
www.example.com/style.php?sheet=main
通过file_get_contents
/home/your_user/main.css
有一个文件
警告
是非常确定style.php脚本无法访问您指定的文件夹之外的任何内容。这可能是一个巨大的安全漏洞
JS和CSS文件将被Web浏览器请求。换句话说,浏览器不理解你的服务器目录结构......它只需要一个有效的URI。
最简单的解决方案是建立一个子域:mycdn.example.com,并把你的JS和CSS文件放在那里,并直接引用每个站点。
ask on serverfault.com – 2010-06-22 23:18:02
我同意serverfault。我猜你正在使用类Unix的操作系统。在这种情况下,软链接可能会做你需要的。 – 2010-06-22 23:19:26