【问题标题】:PHP header location redirect causing 500 Internal Server errorPHP标头位置重定向导致500内部服务器错误
【发布时间】:2010-05-09 13:28:03
【问题描述】:

当下面的脚本到达 header('location:php_email_thankyou.php') 时,我不断收到 500 内部服务器错误。

我不确定是什么原因造成的,因为我可以将标题表达式放在 if 语句之前或之后,它可以正常工作。在萤火虫中,它提到了对php_email_thankyou.php 页面的 GET 请求,不确定这是否意味着什么......

<?php

ini_set('display_errors', 'On');   
error_reporting(E_ALL | E_STRICT);    

include('php/cl/cl_val.php');  
$val = new Validate;  
$print_errors = false;  

if (isset($_POST['email(email)'])){  
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']))  
    {  
        $validation = $val->clean($_POST);  
        if (isset($validation['send']))   
        {  
            header('location:php_email_thankyou.php');  
            exit();  
        }  
        else   
        {  
            print json_encode($validation);  
            exit();  
        }  
    }   
    else   
    {  
        $validation = $val->clean($_POST);  
    }  
}  

?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  

谢谢大家!

【问题讨论】:

  • 确定不是目标文件导致服务器出错?
  • 另外,您能查看一下您服务器的错误日志吗?它们将包含 500 发生的原因的解释。
  • 尝试在地址栏中手动输入 php_email_thankyou.php 的 url 并浏览到它,看看您是否可以真正进入该页面而没有任何错误。如果通过手动浏览仍然出现 500 错误,那么这意味着错误来自感谢页面,而不是来自重定向标头。

标签: php ajax redirect header server-error


【解决方案1】:

HTTP/1.1 要求使用的位置是绝对路径,而不是相对路径。试试这个;

header('Location: http://yourdomain.com/php_email_thankyou.php');  

【讨论】:

  • 现在是这样想的,你也可以指定相对路径。
  • 浏览器倾向于支持相对重定向,但 RFC 明确要求绝对 URI,如 MatW 所述:w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 因此,如果 Location 标头中的相对路径无法与某些用户一起使用,请不要感到惊讶代理。 “它在 Firefox 中有效”并不意味着它是正确的。
  • 嘿,谢谢大家的回答。目标文件没问题,我可以很好地导航到它。我不认为这是一个绝对/相对问题,因为当我将标头重定向放在第一行甚至在 DOCTYPE 声明之前它可以正常工作,所以我很欣赏它可能不是技术上正确的语法,但它仍然作品。我在想也许它是一个ajax问题?也许页面仍在加载中,ajax 正在滴答作响。
  • @globa:检查服务器的错误日志。将会有更多关于是什么导致那里出现 500 的详细信息。您在浏览器中看到的 500 输出是故意最小化的,对于任何形式的调试都是完全无用的。
猜你喜欢
  • 2014-01-11
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多