我確信之前有人問過/回答過這個問題,但我的搜尋對我沒有多大幫助,所以......
我在我的 Linux 機器 (LM13) 上安裝了 Eclipse IDE,其中「工作空間」資料夾位於 @
/home/user/projects/workspace
我安裝並設定了 Apache,使用各種虛擬主機,所有這些虛擬主機的資料夾都位於 Web 根目錄下/var/www/...
我遇到的問題是,Apache 無法存取我為 Eclipse 工作區中的專案配置的虛擬主機,因此顯示“403 - 禁止 - 您無權訪問 / ”這個伺服器。
首先,我只是嘗試了「正常」虛擬主機配置,然後嘗試使用 web-root @ 下的 SymLink
/var/www/freelance/project
連結到 Eclipse 工作區中的專案資料夾
我已經嘗試了FollowSymLinks
和部分SymLinksIfOwnerMatch
下的選項指令<directory ...>
,但我仍然無法在瀏覽器中使用 Apache 存取它!
誰能向我解釋一下如何讓這個設定運作?我還沒有嘗試使用mod_userdir
或設定我的資料夾的文件權限/home
以允許存取 Apache,因為這些似乎都不是有利的。還有別的辦法嗎?
這是我的虛擬主機配置:
# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
NameVirtualHost my.iagd:80
ServerAlias *.my.iagd
# ServerAdmin username@domain
DocumentRoot /var/www/freelance/iagd
<Directory /var/www/freelance/iagd/>
Options FollowSymLinks SymLinksIfOwnerMatch
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
# Define custom log level
LogLevel warn
# Set up custom log files
ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>
更新
輸出來自ls -alFd ~/Projects/workspace/iagd
:-
drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/
相同的輸出/home/user
:-
drwx------ 74 user user 20480 Aug 23 07:30 /home/user/
答案1
您將需要為您的主目錄的子目錄新增一個目錄指令。當 Apache 存取符號連結時,將存取的是符號連結指向的實際目錄,而不是符號連結指標。
所以,你需要做兩件事:
首先,作業系統權限。您的目錄需要對 Apache 使用者可讀,這表示其上方層次結構中的所有目錄都需要為 Apache 使用者設定執行位。
其次,Apache的配置。需要告訴 Apache 可以從該目錄讀取。通常,您會想要限制 Apache 只允許讀取有限的目錄層次結構 - 否則,任何 Web 使用者都可能查看您的密碼文件,或瀏覽每個人的主目錄。因此,當您想要存取 webroot 層次結構以外的目錄時,您需要新增一條指令告訴 Apache 允許它。它看起來像這樣:
# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
NameVirtualHost my.iagd:80
ServerAlias *.my.iagd
# ServerAdmin username@domain
DocumentRoot /var/www/freelance/iagd
<Directory /var/www/freelance/iagd/>
Options FollowSymLinks SymLinksIfOwnerMatch
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
<Directory /home/user/projects/workspace>
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
# Define custom log level
LogLevel warn
# Set up custom log files
ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>