Ubuntu

連結到 Web 根目錄之外的項目

  • June 26, 2014

這是目錄在我的伺服器上的佈局方式(我繼承了這一點,目前無法更改)-

/var/www/<stuff for the web>

/home/project/src/static/<some CSS, some JavaScript, etc.>

在不希望在不同目錄中有重複文件的宏偉計劃中,我嘗試包含一些這樣的文件 -

<link rel="stylesheet" href="/home/project/src/static/css/<file>.css" type="text/css" />
<script src="/home/project/src/static/lib/<file>.js" type="text/javascript"></script>

對於我嘗試以這種方式包含的每個文件,我都會收到 404 錯誤。我已經修改了“主”目錄的路徑,試圖通過添加到路徑字元串的開頭來遍歷從/var/www/到,但沒有任何樂趣。/home/``..

然後,在確認安裝了 mod_alias 之後,我開始在我的配置文件中添加一個路徑別名指令:

Alias /home/project/src/static/ /home/project/src/static/
<Directory /home/project/src/static/>
   Order allow,deny
   Allow from all
</Directory> 

重新啟動 Apache,但仍然沒有運氣。我試過這個有和沒有斜杠。

我已經確認的另一件事open_basedir是未在 php.ini 中設置,因為我了解設置它可能會在嘗試訪問 Web 根目錄之外的文件時產生問題。

除了複製目錄並將其放置在 Web 根文件夾中之外,我還能做些什麼來使這些文件可以從 Web 根目錄中找到?

兩個選項…一個只是正確使用別名…第一個路徑是相對於 web 目錄的,就像您http://yoursite/static在瀏覽器中一樣,您將使用:

Alias /static/ /home/project/src/static/

或者,如果您不喜歡這樣並且寧願通過更改文件系統層次結構來解決它,請使用綁定掛載。

mkdir /var/www/static/

然後在 fstab 中:

/home/project/src/static/ /var/www/static/ bind defaults 0 0

並應用更改:

mount -a

或一次性安裝:

mount --bind /home/project/src/static/ /var/www/static/

綁定安裝並不總是最好或最簡單的選擇……可能會發生有趣的事情,例如。執行rm -rf /var/www/*,你/home/project/src/static/*也會被刪除。

引用自:https://serverfault.com/questions/608215