【问题标题】:Error 404 page and htaccess issues错误 404 页面和 htaccess 问题
【发布时间】:2016-02-05 13:48:22
【问题描述】:

发生了以下情况:我有一个客户要求我创建一个自定义 404 错误页面(用于 SEO 目的),下面是他的网站:

http://www.proloterica.com.br(网站)

http://www.proloterica.com.br/erros/404.html(404 路径工作)

http://www.proloterica.com.br/contato/cont(试图重现404错误,没有任何反应)

http://www.proloterica.com.br/cont(发生错误 500):

内部服务器错误:服务器遇到内部错误或配置错误,无法完成您的请求。请联系服务器管理员 proloterica@proloterica.com.br 并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。服务器错误日志中可能提供有关此错误的更多信息。此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。

下面是 htaccess 文件:

AddDefaultCharset ISO-8859-1

SetEnv SESSAO "SITE"

Options -Indexes

#Habilita o Módulo de Reescrita
RewriteEngine On

#Se a URL apontar para um arquivo, vai diretamente para ele
RewriteCond %{REQUEST_FILENAME} !-f
#Se a URL apontar para uma pasta, vai diretamente para ela
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ $1/index.php?id=$2&pg=$3&sub=$4&aux1=$5&aux2=$6&aux3=$7&aux4=$8

#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

ErrorDocument 404 /erros/404.html

知道如何解决这个问题吗?

如果我删除以下内容,则错误页面 404 有效:

RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ $1/index.php?id=$2&pg=$3&sub=$4&aux1=$5&aux2=$6&aux3=$7&aux4=$8

【问题讨论】:

  • 首先,查看您的 apache error.log 文件并将错误消息添加到您的问题中。
  • 我无法访问日志,它托管在 KingHost 中,我只能访问 ftp
  • 如果我删除 RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*) ?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ $1/index.php?id=$2&pg=$3 &sub=$4&aux1=$5&aux2=$6&aux3=$7&aux4=$8 404 页面有效

标签: php .htaccess http-status-code-404


【解决方案1】:

首先,您很可能遇到此错误,因为您没有设置标志 [L]。所以,替换:

RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ $1/index.php?id=$2&pg=$3&sub=$4&aux1=$5&aux2=$6&aux3=$7&aux4=$8

与:

RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ $1/index.php?id=$2&pg=$3&sub=$4&aux1=$5&aux2=$6&aux3=$7&aux4=$8 [L]

(我已将 [L] 添加到此字符串的末尾)。

注意,RewriteCond 下只有一个字符串会被执行。 因此,当您删除 RewriteRule 后,您的 ErrorDocument 就可以正常工作了。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 2018-06-13
    • 2013-12-04
    • 1970-01-01
    • 2012-08-02
    • 2013-08-31
    • 2013-05-06
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多