Я настраиваю быстрый внутренний проект в новом аддон-домене в cPanel. У этого конкретного установлен сертификат SSL. Я создавал свой .htaccess и добавил директиву <Files config.php>
в deny from all
, чтобы мой файл config.php был недоступен. Я понимаю, что хранить его за пределами веб-корня - это идеально, но в этом случае я не могу.
Обычно я ожидаю, что при переходе на www.domain.com/config.php
в браузере я получу стандартную страницу Apache 403 Forbidden. Это то, что происходит в других доменах на том же сервере. Но в этом случае мне выдается ошибка 404 not found, в которой говорится:
Not Found
Запрошенный URL-адрес /403.shtml не найден на этом сервере.
Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 404 Not Found.
Обычно я ожидал бы этого, если бы пытался определить пользовательские документы об ошибках, но в этом случае я этого не делаю!
Единственное, что отличает этот домен от всех остальных в той же учетной записи 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]
EDIT: Может ли это быть связано с тем, как cPanel обрабатывает первичные и дополнительные домены?
В учетной записи cPanel у вас есть основной домен, файлы которого находятся под public_html
, затем вы определяете дополнительные домены (или поддомены). ), чьи файлы живут под public_html/addondomain.com/
Будет ли .htaccess для основного домена в public_html/.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
Вы видите, что второй получает перенаправление 301, но перенаправляет на 403.shtml. Таким образом, 403.shtml уже был введен до перезаписи на www. бывает.