簡體   English   中英

如何在我的 PHP 項目根目錄之外鏈接 JS 外部文件?

[英]How do I link JS external files outside of my PHP project root directory?

在我的網站上,我的資源文件夾位於根目錄之外,例如:

/var/www/html/是根目錄

/var/www/resources/

我目前有一個設置庫位置的配置文件,因此我可以將它包含在 php 中,如下所示:

defined("LIBRARY_PATH")  

or 

define("LIBRARY_PATH", realpath(dirname(__FILE__) . '/library'));

當我使用它時效果很好:

<?php include_once(LIBRARY_PATH . "/file.php"); ?>

但是在嘗試添加 Javascript 文件時它不起作用:

例如

<script src="../resources/library/js/test.js"></script>

鏈接到“www.website.com/resources/library/js/common.js”或

<script src="<?php echo LIBRARY_PATH; ?>/js/test.js"></script>

鏈接到“www.website.com/var/www/resources/library/js/test.js”

兩者都不起作用。

關於如何在不將 js 文件放在根目錄中或上方的情況下執行此操作的任何建議?

JavaScript文件有,因為它們是由瀏覽器,而不是由服務器執行的是瀏覽器訪問。

這要求他們有一個 URL。

將文件放在 webroot 下是給靜態文件一個 URL 的標准方法。

或者,您可以編寫一個程序(例如用 PHP)來讀取文件,然后將其內容輸出到瀏覽器。 這更復雜,並且使處理緩存控制標頭更加繁瑣,不推薦使用。

假設您了解自己在做什么以及對安全的影響!...

您創建了 linkjs.php 腳本,該腳本將腳本的相對路徑(來自某個根目錄,可能是 /var/www/resource/js)作為參數,例如:

<script src="/linkjs.php?p=test.js">

在您的 PHP 腳本中,您解析完整的文件路徑,檢查它是否確實是根目錄下的文件(以防止參數中的 ../),您的 PHP 用戶是否可以讀取它,讀取內容並將其輸出到響應中. 當然不要忘記將內容類型設置為 text/javascript。

理想情況下,您還應該根據源文件修改時間提供適當的緩存標頭,但這本身就是一個主題。 請參閱有關動態內容的正確緩存標頭的其他 SO 問題中的指南。

好處是,如果您喜歡/需要,您可以進行動態腳本縮小/組合/包裝/替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM