2012-08-30 20 views
2

我在cPanel的新插件域中設置了一個快速內部項目。這個特定的人已經安裝了SSL證書。我正在建立我的.htaccess並添加<Files config.php>指令deny from all,以便我的config.php文件不可訪問。我意識到將它存儲在Web根目錄之外是理想的,但我不能在這種情況下。htaccess文件拒絕所有,重定向到404沒有在403.shtml找到,但沒有定義自定義錯誤頁面

通常我會預計,當在瀏覽器中去www.domain.com/config.php時,我會得到Apache的默認403 Forbidden頁面。這是在同一臺服務器上的其他域上發生的情況。但在這種情況下,我被給予404未找到錯誤,說明:

未找到
請求的URL /403.shtml此服務器上找到。
此外,嘗試使用ErrorDocument處理請求時遇到404未找到錯誤。

我通常會期望這個,如果我試圖定義自定義錯誤文檔,但在這種情況下,我不是!
唯一讓這個域名與同一個cPanel賬號中的其他域名不同的是它有一個SSL證書。無論使用http還是https進行導航,這個404錯誤都是一樣的。我試過清除緩存,仍然是一樣的。

任何人都可以看到我的.htaccess下面可能會導致此問題的任何東西?

DirectoryIndex /index.php 

Options -Indexes +FollowSymLinks 
ServerSignature Off 

# PARSE PHP IN OTHER FILES 
# AddType FOR PHP AS APACHE MODULE, AddHandler FOR CGI 
AddType application/x-httpd-php .ics .xml 

# ATTEMPT FORCE PDF DOWNLOAD 
AddType application/octet-stream .pdf 

# PREVENT ACCESS TO CONFIG 
<Files config.php> 
order allow,deny 
deny from all 
</Files> 

# CACHING 
# http://httpd.apache.org/docs/current/mod/mod_headers.html 
<FilesMatch "\.(js|css|ico|png|gif|jpg)$"> 
Header set Cache-Control "max-age=172800, public, must-revalidate" 
#Header set Expires "Thu, 15 Apr 2011 20:00:00 GMT" 
</FilesMatch> 

# PREVENT ACCESS TO STATS UPDATE SCRIPT AS IT'S CLI ONLY 
<Files stats_update.php> 
order allow,deny 
deny from all 
</Files> 

Redirect 302 /preview http://otherdomain.com/documents/preview 
Redirect 302 /sample http://otherdomain.com/documents/preview 

RewriteEngine On 

# REWRITE NON-WWW TO WWW 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301] 

RewriteRule ^about/?$ /index.php [L] 
RewriteRule ^contact/?$ /contact.php [L] 
RewriteRule ^home/?$ /home.php [L] 
RewriteRule ^order/?$ /order.php [L] 

# MAINTAINANCE 
#RewriteCond %{REMOTE_HOST} !^123\.123\.123\.123 
#RewriteCond %{REQUEST_URI} !^/maintainance\.html$ 
#RewriteRule ^(.*)$ /maintainance.html [R=302,L]

編輯:難道是什麼做的cPanel處理初級和插件域的方式嗎?
在的cPanel賬戶,您有其文件生活在public_html/addondomain.com/

將在public_html/.htaccess中的.htaccess主域是影響/壓倒一切的是一個主域,其文件住public_html下,那麼你定義插件域(或子域)插件域名爲public_html/addondomain.com/.htaccess
我知道.htaccess通過目錄進行級聯,但是這種情況甚至超過特定域的DocumentRoot,例如:在這個附加域的情況下?

編輯2:這裏只是爲了信息是兩個HTTP請求的響應,繞過任何緩存

[email protected] [/home/username]#curl -i 'http://www.mydomain.com/config.php' 
HTTP/1.1 403 Forbidden 
Date: Sun, 16 Sep 2012 19:05:10 GMT 
Server: Apache 
Content-Length: 331 
Content-Type: text/html; charset=iso-8859-1 


[email protected] [/home/username]# curl -i 'http://mydomain.com/config.php' 
HTTP/1.1 301 Moved Permanently 
Date: Sun, 16 Sep 2012 19:05:20 GMT 
Server: Apache 
Location: http://www.mydomain.com/403.shtml 
Content-Length: 244 
Content-Type: text/html; charset=iso-8859-1 

你看:第二個得到301重定向,但它重定向到403.shtml。因此,在重寫www之前,已經注入了403.shtml。發生。

回答

5

這是不可複製的香草Apache安裝,所以我開始進一步審問cPanel。所以在大量的搗亂之後,我已經找到了這個問題。 cPanel確實爲你設置了ErrorDocument指令,它根本不是很聰明。尤其是當它將ErrorDocuments設置爲與Apache默認值相同的文檔時。
由於ErrorDocument cPanel屏幕爲空白,因此發生這種情況並不明顯。

的cPanel的httpd.conf從相當多的內置包括CONFIGS和藏有...

/usr/local/apache/conf/includes/errordocument.conf 
... 
# 403 - Forbidden 
ErrorDocument 403 /403.shtml

就這樣,我們走了,這也正是403.shtml在請求出現。 cPanel爲我設置錯誤文檔。爲了避免在403上看到404的困惑,我設置了自己的403錯誤消息,至少它們是一致的。

我希望這可以幫助別人!

1

您的htaccess文件不會導致自定義錯誤頁面。如果沒有其他htaccess文件,問題可能在於cPanel,其中有its own way of setting custom error pages

+0

我看了一下cPanel的那一部分,它似乎並沒有爲問題域明確設置任何東西。儘管我已經編輯了一些我的問題進一步的想法。乾杯 – batfastad

相關問題