安全地清除 ownCloud Apache .htaccess 警告

對於託管在 Apache 上的 ownCloud Classic 安裝,若要解決「AllowOverride All」或「.htaccess 不起作用」的警告,請在活動虛擬主機中 ownCloud Web 根目錄的AllowOverride All對應 Apache<Directory>設定區塊中進行設定。測試 Apache 配置,重新載入服務,並刷新 ownCloud 的管理概覽。請勿為整個檔案系統啟用覆蓋。

Apache 虛擬主機編輯器顯示了 DocumentRoot 和與之相符的 ownCloud Directory 區塊,並啟用了 AllowOverride All 屬性。
此覆蓋項應位於與 ownCloud 檔案系統路徑相符的 Apache 目錄區塊中。

警告的含義

Apache 的AllowOverride指令控制哪些設定.htaccess可以套用到檔案中。如果停用 ownCloud 目錄的覆蓋,Apache 可以忽略 ownCloud 提供的.htaccess檔案中的規則。這可能會影響重寫規則和安全性規則,因此 ownCloud 目前的 10.16 版本手冊AllowOverride All在其 Apache 設定範例中包含了相關說明。

該指令僅在 Apache 配置段中有效<Directory>。它不能位於 `<head>` 標籤內.htaccess、` <Location><body>` 標籤區塊或 URL 路徑中。 Apache 也提醒管理員不要在全域<Directory "/">設定區塊中啟用覆蓋設定;而應將設定範圍限定在 ownCloud 安裝目錄。請參閱ownCloud 10.16 Apache 安裝指南和 ApacheAllowOverride參考文件。

在編輯 Apache 之前

  • 確認處理 ownCloud 的 Web 伺服器是 Apache。此指令不會設定 Nginx。如果 Apache 位於代理伺服器之後,請確定提供 ownCloud 檔案的 Apache 主機。
  • 找到 ownCloud 的實際安裝路徑,例如/var/www/owncloud。使用 Apache 提供的檔案系統路徑,而不是瀏覽器 URL,例如/owncloud。
  • 修改虛擬主機檔案前,請先備份。在 Debian 或 Ubuntu 系統中,ownCloud 的指南中使用的是 `/usr/local/bin` /etc/apache2/sites-available/owncloud.conf;其他發行版使用的路徑可能不同。
  • 檢查您的 HTTP 和 HTTPS 虛擬主機是否獨立。將設定放在處理 ownCloud 請求的虛擬主機上;如果兩個虛擬主機都直接提供檔案服務,請確保兩者配置一致。

在 Debian 或 Ubuntu 系統上,sudo apachectl -S它會列出 Apache 的虛擬主機及其設定檔。這有助於避免在 HTTPS 虛擬主機繼續為 ownCloud 提供服務時,誤編輯未使用的預設網站。

將指令加入到符合的目錄區塊中

開啟目前虛擬主機設定文件,找到現有的 ownCloud<Directory>部分。新增或修改其中的對應行。對於標準安裝/var/www/owncloud,相關部分可能如下所示:

DocumentRoot /var/www/owncloud

<Directory /var/www/owncloud/>
  Options +FollowSymLinks -Indexes
  AllowOverride All
  Require all granted
</Directory>

請將此設定合併到您現有的配置中,而不是用這個簡短的範例取代整個虛擬主機。如果您的 ownCloud 目錄位於其他位置,請將兩條路徑都替換為實際路徑。 Apache 要求目錄路徑與它用於檔案的檔案系統路徑相符。

All允許檔案中允許的任何指令.htaccess覆蓋此目錄中的伺服器設定。權限範圍很廣,因此請將此權限區塊限制在 ownCloud 網站根目錄。不要為了消除警告而更改此權限區塊,例如AllowOverride None用於其他網站或無關網站。//var/www

測試、重新載入並驗證

在 Debian 或 Ubuntu 系統上,ownCloudmod_rewrite會根據需要提供 Apache 設定文件。如果 Apache 未啟用,請使用下列命令啟用:

sudo a2enmod rewrite

然後,在套用配置之前,請先檢查配置:

sudo apachectl -t

僅當 Apache 報告錯誤時才繼續Syntax OK。重新載入 Apache 以便其讀取更新後的虛擬主機:

sudo systemctl reload apache2

對於使用httpd服務名稱的發行版,請改用該發行版的設定測試和重新載入指令。返回 ownCloud 的「設定」>「管理」>「概覽」並重新整理頁面。如果 Apache 正在讀取已編輯的虛擬主機並處理 ownCloud 的配置,則警告應該會消失.htaccess。

Linux 終端機運行 a2enmod rewrite 指令,顯示 Apache rewrite 模組已啟用。
當 ownCloud 的重寫行為是警告的一部分時,請檢查 Apache 的重寫模組是否已啟用。
Linux 終端機顯示 apachectl -t 指令傳回“語法正確”,然後重新載入 Apache。
重新載入服務前,請先驗證 Apache 設定。
一個類似 ownCloud 的管理概覽頁面,沒有顯示 AllowOverride 警告。
重新載入後,再次存取管理概覽並檢查 .htaccess 警告是否已清除。

如果警告仍然存在

  • 檢查目前活動的虛擬主機。再次執行sudo apachectl -S並確認修改後的檔案與 ownCloud 使用的主機名稱和連接埠相符。AllowOverride All不符合的程式碼區塊中的一行無效。
  • 檢查確切的路徑和節。確認該程式碼區塊是字面上的<Directory /path/to/owncloud/>節,並且路徑與安裝目錄相符。 Apache 會忽略AllowOverride`in`.htaccess和 ` <Location>.`。
  • 僅在需要時重新產生過時的 ownCloud 規則。如果虛擬主機配置正確,但 ownCloud 的重寫規則需要更新,請參閱其手冊文件occ maintenance:update:htaccess。例如,以 Web 伺服器使用者身分從 ownCloud 目錄執行該文件sudo -u www-data php occ maintenance:update:htaccess。 Web 伺服器使用者必須具有寫入.htaccess此更新所提供檔案的權限。請勿將該檔案設定為全域可寫入;請根據您的安裝指南更正其所有權或權限。
  • 出現 500 錯誤後,請閱讀 Apache 錯誤日誌。語法檢查會驗證 Apache 的主要配置,但.htaccess如果缺少相應的模組或指令本身不被允許,則該指令仍然可能失敗。請使用錯誤日誌來確定具體的模組或規則。

ownCloud 文件中說明的無需 index.php 的 URL 設定也需要 `<path>` mod_rewrite、mod_env`<path>` 和可寫根目錄.htaccess;這是一個相關的重寫配置,並非將重寫範圍擴展到 ownCloud 目錄之外的理由。如果您的設定使用 PHP-FPM,請遵循 ownCloud 針對該安裝的最新指南,而不是修改 PHP 處理程序來解決 Apache 重寫警告。如果警告指出資料目錄可能公開可訪問,請驗證資料目錄是否位於 Web 根目錄之外,或者是否受到明確的 Apache 規則保護;.htaccess僅清除警告並不能證明私有檔案無法直接要求。

有關已記錄的行為和平台限制,請參閱 ownCloud 的無 index.php URL 指南及其OCC 命令參考。

留下評論

安全地清除 ownCloud Apache .htaccess 警告

安全地清除 ownCloud Apache .htaccess 警告

僅對 ownCloud 的 Web 根目錄設定 AllowOverride All,驗證活動的 Apache 虛擬主機,然後安全地重新載入以恢復 .htaccess 規則。

設定 ownCloud 企業審計並驗證日誌

啟用 ownCloud 的企業審計應用程序,將 admin_audit 事件路由到受保護的日誌文件,並確認正在記錄真實使用者的操作。

使用 OIDC 將 ownCloud Infinite Scale 連接到 Keycloak

使用 OIDC 將 ownCloud Infinite Scale 連接到 Keycloak

讓 Keycloak 的 realm 頒發者、Web 用戶端和使用者聲明保持一致,以便 ownCloud Infinite Scale 能夠可靠地在 Web 和行動用戶端上登入使用者。

將 ownCloud 檔案轉移給新所有者而不丟失共享份額

使用 ownCloud 的 occ 指令傳輸擁有的檔案和要傳出的共享,以了解哪些內容會保留下來,並在刪除舊帳戶之前驗證存取權限。

透過安全地管理索引來加速 ownCloud 10 查詢

了解何時需要關注 ownCloud 10 資料庫索引,如何安全地應用受支援的架構更新,以及何時查詢調優或資料庫變更是更好的解決方案。

無需 Linux 掛載即可在 ownCloud 中掛載 SMB/CIFS 共享

透過外部儲存將 Windows 或 Samba 網路共用連接到 ownCloud,驗證憑證,並安全地排查無法存取的資料夾問題。

使用 occ 指令安全地清除 ownCloud 檔案版本

使用 occ 指令安全地清除 ownCloud 檔案版本

刪除一個帳戶或所有使用者的所有已儲存的 ownCloud Server Classic 檔案版本,並區分完全清除和基於保留期限的過期。

ownCloud 行動連線被拒絕?請檢查 URL 和可及性

ownCloud 行動連線被拒絕?請檢查 URL 和可及性

以正確的順序檢查伺服器 URL、手機網路、HTTPS 端點和伺服器日誌,即可追蹤 ownCloud 行動連線被拒絕的原因。

使用 Systemd 定時器可靠地執行 ownCloud 後台作業

將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。

透過尋找故障路由來恢復 ownCloud WebDAV 同步

透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。