错误 404 页面和 htaccess 问题
Error 404 page and htaccess issues
发生的事情如下:我有一个客户要求我创建一个自定义 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 ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4=
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
ErrorDocument 404 /erros/404.html
知道如何解决这个问题吗?
如果我删除以下内容,错误页面 404 将起作用:
RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4=
首先,最有可能的是,您遇到此错误是因为您没有设置标志 [L]。所以,替换:
RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4=
与:
RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4= [L]
(我在这个字符串的末尾添加了 [L])。
请注意,只有 RewriteCond 下的一个字符串会被执行。
因此,当您删除 RewriteRule 时,您的 ErrorDocument 可以正常工作。
发生的事情如下:我有一个客户要求我创建一个自定义 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 ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4=
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]
ErrorDocument 404 /erros/404.html
知道如何解决这个问题吗?
如果我删除以下内容,错误页面 404 将起作用:
RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4=
首先,最有可能的是,您遇到此错误是因为您没有设置标志 [L]。所以,替换:
RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4=
与:
RewriteRule ^([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?(.*)$ /index.php?id=&pg=&sub=&aux1=&aux2=&aux3=&aux4= [L]
(我在这个字符串的末尾添加了 [L])。
请注意,只有 RewriteCond 下的一个字符串会被执行。 因此,当您删除 RewriteRule 时,您的 ErrorDocument 可以正常工作。