Apache-2.2
Apache - 403 禁止訪問某些靜態文件
我很難使用 .htaccess 指令。我正在嘗試為 Codeigniter 框架重寫 URL。
生產伺服器上的一切都按預期工作,但我無法正確設置自己的測試伺服器。
測試伺服器
URL 重寫效果很好,php 文件按預期呈現,但通過 HTML(css、js、img)包含的所有文件都不會顯示,因為它們無法訪問,原因是:
403 Forbidden You don't have permission to access /path/to/file/plugins-min.css on this server.
這是我的 .htaccess 文件:
RewriteEngine On # Do not enable rewriting for files or directories that exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # For requests that are not actual files or directories, # Rewrite to index.php/URL RewriteRule ^(.*)$ index.php/$1 [PT,L]
這是我的文件文件夾的 Apache2 配置:
<Directory /document/folder/> Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec AllowOverride All Order deny,allow Allow from all </Directory>
當我設置
AllowOverride
為None
(即不重寫 URL)時,靜態文件會正確顯示。當通過腳本上傳圖像時,即使它們與其他不可訪問的文件具有相同的權限/所有者/組,它們也會顯示在頁面上。
網站上的所有內容都具有相同的權限和所有者。
我認為我的 Apache 配置有一些東西會阻止“包含的 HTML ”文件被訪問,正如 Apache 錯誤日誌所說:
[Wed Aug 17 22:29:24 2011] [error] [client <MY IP>] client denied by server configuration: /var/www/site.com/application/assets/js/admin.js, referer: http://<MY IP>/site.com/page/edit/
提前致謝
使用 AllowOverride All 在上面您正在工作的其他目錄中查找 .htaccess 文件時,這很常見,這會影響您的配置。根據發布此答案的評論執行緒來收集賞金。這是一個範例查找命令:
找到DocumentRoot -name .htacccess -print
將列印任何其他 .htaccess 文件。
查找所有
.htaccess
文件:find /var/www/ -name .htaccess
作為臨時更改:
Order deny,allow Allow from all
到:
Order allow,deny Allow from all
確保
Deny
之前沒有處理任何規則。