如何將我的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