Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Php 服务器对确实存在于正确目录中的资源发出410错误_Php_.htaccess_Http_Server_Http Status Code 410 - Fatal编程技术网

Php 服务器对确实存在于正确目录中的资源发出410错误

Php 服务器对确实存在于正确目录中的资源发出410错误,php,.htaccess,http,server,http-status-code-410,Php,.htaccess,Http,Server,Http Status Code 410,我正在创建一个电子商务网站,我以前一直在使用Magento,但现在改为自定义网站 在这个网站上,我创建了一个名为create_account.php的页面,这在一段时间内还不错,效果很好,但随后它开始抛出一个我从未见过的410错误。做了一点研究,可以看出这表明该文件确实存在,但不再存在 我觉得很公平,也许Magento有一个同名文件,它有一个文件被删除的记录,所以它停止读取我的文件,所以我会创建一个副本,调用其他名称,将对该文件的所有引用更改为新名称account\u create.php,并

我正在创建一个电子商务网站,我以前一直在使用Magento,但现在改为自定义网站

在这个网站上,我创建了一个名为
create_account.php
的页面,这在一段时间内还不错,效果很好,但随后它开始抛出一个我从未见过的410错误。做了一点研究,可以看出这表明该文件确实存在,但不再存在

我觉得很公平,也许Magento有一个同名文件,它有一个文件被删除的记录,所以它停止读取我的文件,所以我会创建一个副本,调用其他名称,将对该文件的所有引用更改为新名称
account\u create.php
,并在我的
.htaccess
文件中插入一行,以将可能前往第一个文件的用户重定向到我的新文件,但我将原始文件保留在服务器上

这在多台计算机/浏览器/网络等上运行了一段时间(我说的是几天而不是几小时/分钟),但随后同样的事情发生了。这一次,我认为它不可能是Magento遗留下来的东西,或者服务器仍然有记录的东西,但是如果上次修复成功,我将尝试一下,看看它是如何运行的

现在这种情况已经发生了6次,同一个文件在一个月的时间内有6个不同的文件名,该文件工作了几天,然后服务器说该文件不见了。但是,所有6个文件仍在我服务器的主目录中。我有一个新名字的第七个版本,目前正在运行,但我不抱希望,我的
.htaccess
文件变得荒谬可笑

  RewriteRule ^create_account/?$ create.php [L,NC,QSA]
  RewriteRule ^createaccount/?$ create.php [L,NC,QSA]
  RewriteRule ^accountcreate/?$ create.php [L,NC,QSA]
  RewriteRule ^account_create/?$ create.php [L,NC,QSA]
  RewriteRule ^account_creation/?$ create.php [L,NC,QSA]
  RewriteRule ^accountcreation/?$ create.php [L,NC,QSA]
我开始怀疑实际的文件本身,尽管在WAMP上本地一切都很好,而且在发生这种情况之前的一段时间内都很好。以下是此文件的内容:

<?php
$active_country_id = $_SESSION["active_country_id"];
$active_country_name = $_SESSION["active_country_name"];
$active_country_code = $_SESSION["active_country_code"];
$active_country_currency = $_SESSION["active_country_currency"];
$active_country_vat = $_SESSION["active_country_vat"];
$active_country_braintree = $_SESSION["active_country_braintree"];

$message = "";
$first_name = "";
$last_name = "";
if(isset($_POST['company_name'])){$company = $_POST['company_name'];}else{$company = "";}
$email = "";
$phone = "";
$password1 = "";
$password2 = "";
$parsed = "";

if(isset($_GET['id']) && $_GET['id'] != ""){
    $id = $_GET['id'];
    $params = [$id];
    $sql = "SELECT * FROM customers WHERE id=?";
    $stmt = DB::run($sql,$params);
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        $first_name = $row["first_name"];
        $last_name = $row["last_name"];
        $email = $row["email"];
    }
}

if (isset($_POST['first_name'])){
    if (isset($_POST['first_name']) && $_POST['first_name']!=""){
        $first_name = $_POST['first_name'];
        $parsed = "true";
    }else{
        $message .= "<div id='warning'>";
        $message .= "First Name is a required field";
        $message .= "</div>";
        $parsed = "false";
    }
    if (isset($_POST['last_name']) && $_POST['last_name']!=""){
        $last_name = $_POST['last_name'];
        $parsed = "true";
    }else{
        $message .= "<div id='warning'>";
        $message .= "Surname is a required field";
        $message .= "</div>";
        $parsed = "false";
    }
    if (isset($_POST['email']) && $_POST['email']!=""){
        $email = $_POST['email'];
        $parsed = "true";
    }else{
        $message .= "<div id='warning'>";
        $message .= "Email is a required field";
        $message .= "</div>";
        $parsed = "false";
    }
    if (isset($_POST['phone']) && $_POST['phone']!=""){
        $phone = $_POST['phone'];
        $parsed = "true";
    }else{
        $message .= "<div id='warning'>";
        $message .= "Phone Number is a required field";
        $message .= "</div>";
        $parsed = "false";
    }
    if (isset($_POST['password1']) && $_POST['password1']!=""){
        $password1 = $_POST['password1'];
        $parsed = "true";
    }else{
        $message .= "<div id='warning'>";
        $message .= "Both password fields are required";
        $message .= "</div>";
        $parsed = "false";
    }
    if (isset($_POST['password2']) || $_POST['password2']!=""){
        $password2 = $_POST['password2'];
        $parsed = "true";
    }else{
        $message .= "<div id='warning'>";
        $message .= "Both password fields are required";
        $message .= "</div>";
        $parsed = "false";
    }
    if ($_POST['password1'] == $_POST['password2']){
        $parsed = "true";
    }else{
        $message .= "<div id='warning'>";
        $message .= "Password fields must match";
        $message .= "</div>";
        $parsed = "false";
    }
    if($parsed == "true")
    {
        $params = [$email];
        $sql = "SELECT * FROM customers WHERE email=?";
        $stmt = DB::run($sql,$params);
        $customerCount = $stmt->rowCount();
        if ($customerCount < 0) {
            $message .= "<div id='warning'>";
            $message .= "A customer with this email address already exists";
            $message .= "</div>";
        }else{
            if(isset($_GET['id']) && $_GET['id'] != ""){
                $customer_id = $_GET['id'];
                $params1 = [$first_name,$last_name,$email,$password1,$company,$phone,$customer_id];
                $sql1 = "UPDATE customers set first_name=?, last_name=?, email=?, password=?, last_log_date=now(), company=?, phone=? WHERE id=?";
                $stmt1 = DB::run($sql1,$params1);
            }else{
                $params2 = [$first_name,$last_name,$email,$password1,$company,$phone];
                var_dump($params2);
                $sql2 = "INSERT INTO customers (first_name, last_name, email, password, last_log_date, company, phone) VALUES(?,?,?,?,now(),?,?)";
                $stmt2 = DB::run($sql2,$params2);
                $customer_id = DB::lastInsertId();
            }
            $to = $email;
            $subject = "Your example.com account";
            $message_header = file_get_contents("mail/email_header.php");
            $message_content = file_get_contents("mail/account_created.php");
            $message_content = str_replace('%first_name%', $first_name, $message_content); 
            $message_content = str_replace('%last_name%', $last_name, $message_content); 
            $message_content = str_replace('%email%', $email, $message_content);
            $message_footer = file_get_contents("mail/email_footer.php");
            $message_to_send = $message_header.$message_content.$message_footer;
            $headers = "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            $headers .= "From: support@example.com" . "\r\n";
            $headers .= "Reply-To: support@example.com" . "\r\n";
            mail($to,$subject,$message_to_send,$headers);

            $cookie_string = $customer_id.'%'.$first_name.'%'.$last_name;
            $cipher = 'aes128';
            $key = '*****';
            $iv = '****************';
            $encrypted_cookie_string = openssl_encrypt($cookie_string,$cipher,$key,$options=0,$iv);
            setcookie("example_customer",$encrypted_cookie_string,time()+(60*60*24*30),"/");
            header("location: create");
        }
    }
}
if(isset($_COOKIE["example_customer"])){
    header("location: account");
    exit();
}
?>

<!DOCTYPE html>
<html>
<head>
<?php include_once("analytics.php"); ?>
<?php include_once("base.php"); ?>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="web/style.css" type="text/css" media="screen"/>
<link rel="shortcut icon" type="image/ico" href="web/favicon.ico"/>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="web/script.js"></script>
<title>
</title>
</head>
<body>
<div id="mainWrapper">

    <div id="pageHeader">
        <?php include_once("page_header.php"); ?>
    </div>

    <div id="pageContent">
        <!--<div id="sidebar">
            <?php include_once("page_sidebar.php"); ?>
        </div>-->
        <div id="mainContent">
            <center>
            <?php echo $message ?>
            <form id="create_account_form" name="create_account_form" method="post" action="create">
            <center><img src="web/example_logo_bg.png"></center>
            <h2>Create Account</h2>
            First Name:
            <br />
            <input name="first_name" type="text" id="first_name" size="40" placeholder="First Name">
            <br /><br />            
            Surname:
            <br />
            <input name="last_name" type="text" id="last_name" size="40" placeholder="Last Name"/>
            <br /><br />            
            Company Name:
            <br />
            <input name="company_name" type="text" id="company_name" size="40" placeholder="Company Name"/>
            <br /><br />
            Email:
            <br />
            <input name="email" type="text" id="email" size="40" placeholder="Email"/>
            <br /><br />
            Phone Number:
            <br />
            <input name="phone" type="text" id="phone" size="40" placeholder="Phone Number"/>
            <br /><br />
            Password:
            <br />
            <input name="password1" type="password" id="password1" size="40" placeholder="Password"/>
            <br /><br />
            Confirm Password:
            <br />
            <input name="password2" type="password" id="password2" size="40" placeholder="Password"/>
            <br /><br />
            <center>
            <button name="create_account" id="create_account" onclick=this.form.submit();>Create Account</button>
            </center>
            </form>
        </center>
        </div>
    </div>

</div>
</body>
</html>


如果可能的话,我想确认php文件是否正常,或者至少如果它有问题,它会抛出一个常见的php错误,而不是http响应说该文件不再存在。

这是通过联系我的共享域主机解决的

虽然从技术上讲,该文件没有任何问题,并且工作正常,但域主机将其标记为恶意文件


我仍在等待,看他们能否提供更多信息,说明为什么这被视为恶意行为。

这又一次发生了。这次工作了2-3天。不知道是什么原因造成的你有什么
RewriteRule^(.*)$http://airbrake.io/expired_page$1[R=410,L]
规则,这些规则具有
R=410
?检查.htaccess和您的apache配置。另外,如果在unix上运行,请检查命令日志。还请阅读您的apache日志。@Tschallacka我已在上面添加了我的完整.htaccess,我正在努力尝试在我的共享服务器(由register365托管)上查找apache日志。我不认为实际PHP文件有问题吗?如果你重写<代码> ^ Actudio创建//$<代码>,那么为什么它在屏幕截图中说“代码>…/Actudio?PHP < /代码>?考虑先付一些额外的欧元并购买你控制的专用服务器。例如,在strato,你可以每月以9欧元的价格获得一个linux vps。然后你可以控制所有需要的设置,可以在同一个站点上托管多个域,等等。。。只是一个建议。至于您的重定向,请考虑使用路由文件。通过index.php路由所有流量,然后让index.php根据slug决定将其重新路由到哪个文件。这是因为您有一个
mail()
呼叫共享主机是noob,它们会阻止收到电子邮件的所有内容,而不是从控制面板读取电子邮件。它们只需单击“阻止”按钮,你应该改用mailgun之类的工具,这样你就不用使用服务器mailer,也不用自己的了。不是这样,我还有其他的mail()函数可以在网站的其他部分正常工作。我更改了它,使所有解析都嵌套在前一位中,并且去掉了$parsed变量,这似乎完成了这个技巧(尽管这对我来说没有意义,因为它被认为是恶意的)。这发生在我身上。我发送了一个大约1MB大小的帖子,它在主机端被标记为垃圾邮件,所以所有回复都是410。在几次尝试之后,我的IP被禁止并在大约一个小时后解除绑定(我可以确切地说)。我甚至无法访问同一台共享机器上的其他站点(其他客户端的站点,而不仅仅是我自己的站点)!!我通过联系我的主持人支持解决了这个问题。
Options -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^category/([0-9a-zA-Z-]+)/?$ category.php?id=$1 [L,NC,QSA]
RewriteRule ^product/([0-9a-zA-Z-]+)/?$ product.php?id=$1 [L,NC,QSA]
RewriteRule ^product/([0-9a-zA-Z-]+)/added?$ product.php?id=$1&added=added [L,NC,QSA]
RewriteRule ^page/([0-9a-zA-Z-]+)/?$ page.php?page_id=$1 [L,NC,QSA]
RewriteRule ^order/([0-9a-zA-Z-]+)/?$ order.php?id=$1 [L,NC,QSA]

RewriteRule ^create_account/?$ creation.php [L,NC,QSA]
RewriteRule ^createaccount/?$ creation.php [L,NC,QSA]
RewriteRule ^accountcreate/?$ creation.php [L,NC,QSA]
RewriteRule ^account_create/?$ creation.php [L,NC,QSA]
RewriteRule ^account_creation/?$ creation.php [L,NC,QSA]
RewriteRule ^accountcreation/?$ creation.php [L,NC,QSA]
RewriteRule ^create/?$ creation.php [L,NC,QSA]

RewriteRule ^([^\.]+)$ $1.php [L,NC,QSA]