2

cPanelの新しいアドオンドメインに簡単な内部プロジェクトを設定しています。この特定のものにはSSL証明書がインストールされています。.htaccessを構築し、config.phpファイルにアクセスできないように<Files config.php>ディレクティブを追加しました。deny from allWebルートの外部に保存するのが理想的だと思いますが、この場合はできません。

通常www.domain.com/config.php、ブラウザにアクセスすると、Apacheのデフォルトの403Forbiddenページが表示されると思います。これは、同じサーバー上の他のドメインで発生することです。しかし、この場合、404notfoundエラーが表示されます。

見つかりません
要求されたURL/403.shtmlがこのサーバーで見つかりませんでした。
さらに、ErrorDocumentを使用してリクエストを処理しようとしたときに、404NotFoundエラーが発生しました。

カスタムエラードキュメントを定義しようとした場合、通常はこれを期待しますが、この場合はそうではありません。
このドメインが同じcPanelアカウント内の他のすべてのドメインと異なる唯一の点は、SSL証明書を持っているという事実です。そして、この404エラーは、httpまたはhttpsを使用してナビゲートするかどうかに関係なく同じです。キャッシュをクリアしようとしましたが、それでも同じです。

誰かがこれを引き起こしている可能性のある下の私の.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するアドオンドメイン(またはサブドメイン)を定義します。public_html/addondomain.com/

のプライマリドメインの.htaccessは、public_html/.htaccessのアドオンドメインの.htaccessに影響を与える/オーバーライドしますpublic_html/addondomain.com/.htaccessか?
.htaccessがディレクトリを介してカスケードされることは知っていますが、特定のドメインのDocumentRootの上にある場合でも、たとえば、このアドオンドメインの場合はどうでしょうか。

編集2:ここでの情報は、キャッシュをバイパスした両方のHTTPリクエストへの応答です

root@vps [/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


root@vps [/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

2つ目は301リダイレクトを取得しますが、403.shtmlにリダイレクトしていることがわかります。したがって、403.shtmlは、wwwに書き換える前にすでに挿入されています。起こります。

4

2 に答える 2

5

これはバニラのApacheインストールでは再現できなかったので、cPanelにさらに問い合わせ始めました。それで、たくさんいじくり回した後、私は問題を突き止めました。cPanelは確かにErrorDocumentディレクティブを設定しますが、それほど賢くはありません。特に、ErrorDocumentsをApacheのデフォルトと視覚的に同一のドキュメントに設定する場合。
ErrorDocument cPanel画面が空白であるため、これがどこで発生するかは明らかではありません。

cPanelのhttpd.confは、かなりの数の含まれている構成から構築されており、そこに隠れています...

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

さて、ここで403.shtmlがリクエストに表示されます。cPanelがエラードキュメントを設定してくれます。403で404が表示されるという混乱を避けるために、少なくとも一貫性があるように、独自の403エラーメッセージを設定しました。

これが誰かを助けてくれることを願っています!

于 2012-09-17T09:08:23.900 に答える
1

htaccessファイルがカスタムエラーページを引き起こしていません。他にhtaccessファイルがない場合、問題はおそらくcPanelにあります。これには、カスタムエラーページを設定する独自の方法があります

于 2012-08-30T17:48:07.463 に答える