Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache htaccess file deny from all,重定向到403.shtml上未找到的404,但未定义自定义错误页_Apache_.htaccess_Custom Error Pages - Fatal编程技术网

Apache htaccess file deny from all,重定向到403.shtml上未找到的404,但未定义自定义错误页

Apache htaccess file deny from all,重定向到403.shtml上未找到的404,但未定义自定义错误页,apache,.htaccess,custom-error-pages,Apache,.htaccess,Custom Error Pages,我正在cPanel的一个新插件域中建立一个快速的内部项目。此特定证书已安装SSL证书。我正在构建.htaccess,并添加了一个指令到deny from all,因此无法访问我的config.php文件。我意识到将其存储在web根目录之外是理想的,但在这种情况下我不能 通常,当我在浏览器中访问www.domain.com/config.php时,我会看到Apache默认的403禁止页面。这是在同一服务器上的其他域上发生的情况。但在本例中,我收到一个404 not found错误,说明: 未找到

我正在cPanel的一个新插件域中建立一个快速的内部项目。此特定证书已安装SSL证书。我正在构建.htaccess,并添加了一个
指令到
deny from all
,因此无法访问我的config.php文件。我意识到将其存储在web根目录之外是理想的,但在这种情况下我不能

通常,当我在浏览器中访问
www.domain.com/config.php
时,我会看到Apache默认的403禁止页面。这是在同一服务器上的其他域上发生的情况。但在本例中,我收到一个404 not found错误,说明:

未找到
在此服务器上找不到请求的URL/403.shtml。
此外,尝试使用ErrorDocument处理请求时遇到404 Not Found错误

如果我试图定义自定义错误文档,我通常会想到这一点,但在这种情况下,我不会
唯一使这个域与同一cPanel帐户中的所有其他域不同的是它有一个SSL证书。无论使用http还是https导航,404错误都是相同的。我尝试过清除缓存,但还是一样

有人能在下面的my.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]

你看,第二个得到301重定向,但它重定向到403.shtml。因此,403.shtml在重写到www.com之前已经被注入。

您的htaccess文件不会导致自定义错误页面。如果没有任何其他htaccess文件,问题可能在于cPanel,它有。

这在普通的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错误消息,这样至少它们是一致的


我希望这能帮到别人

我在cPanel中查看了该部分,似乎没有为问题域明确设置任何内容。虽然我对我的Q做了进一步的修改。干杯
/usr/local/apache/conf/includes/errordocument.conf
...
# 403 - Forbidden
ErrorDocument 403 /403.shtml