使用表单提交未找到404页面

时间:2013-07-28 10:32:37

标签: apache .htaccess mod-rewrite http-status-code-404

在localhost中一切都还可以。

但我有一个托管位于/ public_html / site文件夹中我有主要的WordPress网站。我有另一个PHP站点,在/ public_html / site / BETA中没有htaccess。

您可以在此处登录:http://yoursocialtool.com/BETA/login.php 用户:堆栈 密码:溢出 现在的问题是,当我尝试在登录后使用表单提交到同一页面时注销,如http://yoursocialtool.com/BETA/dashboard.php,它说:

  

未找到404页面!

但是,如果我直接将网址放在浏览器地址栏http://yoursocialtool.com/BETA/dashboard.php中,那么其加载正常,没有任何404错误。

/ public_html中的.htaccess:

RewriteOptions inherit

RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursocialtool.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.yoursocialtool.com$
RewriteCond %{REQUEST_URI} !site/
RewriteRule (.*) /site/$1 [L]

/ public_html / site中的.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /site/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /site/index.php [L]
</IfModule>

# END WordPress

以下是我在dashboard.php中使用的代码:

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
ini_set('error_log','error.log');
require("config.inc.php");
require("__require_login.php");
require_once("_isconnected.php");
if (isAppLoggedIn()){
    require("_dashboard.html.php");
} else {
    echo ($msg);
    ?>
    <script>
window.location = "./login.php?from=dashboard&location=";
window.location.assign("./login.php?from=dashboard&location=assign");
    </script>
    <?php
}
?>

我面临的问题是代码在登录后没有在服务器中执行JavaScript重定向。实际上,在我提交注销请求后它没有获得dashboard.php,尽管它似乎已成功注销。我正在处理dashboard.php中的注销操作。似乎是/public_html/site/index.php仅在注销提交后才处理它。

N.B:我的localhost只有/ public_html / site / BETA下的网站部分。所以localhost没有任何htaccess或wordpress。

2 个答案:

答案 0 :(得分:0)

  

在localhost中一切都还可以。

只因为它适用于localhost,它不一定需要在任何地方工作。这就是为什么服务器配置的开发版本与稍后部署它的服务器配置接近(如果不相同)本质上很重要的原因。

对于该用途virtualization并尝试在您的localhost上重现404。

在两端获得相同的行为是对问题进行故障排除的第一个合理的检查。根据您在问题中提供的当前信息,这是我能给出的最佳建议。

简短的回答是:两个系统之间的配置不同。请注意,您可以在两个系统上使用相同的配置,不仅包括配置指令,还包括所涉及的所有软件的相同版本,例如相同版本的Web服务器,相同的操作系统和相同版本的PHP(尽管如此) PHP似乎不是问题所在。)

答案 1 :(得分:0)

我将网站移到了子域名。之后我看到404错误500。 我找到了与Apache系统管理员协商的解决方案。他们告诉我日志中有错误,如下所示:

malformed header from script. Bad header=

然后我发现服务器不支持服务器端php脚本中的重定向。然后我在服务器中禁用重定向,现在它正常工作。我使用了JavaScript重定向。

<?php
//header('Location: http://www.example.com/');//Use JavaScript to redirect instead. Comment it out
exit;
?>

如果某人必须需要重定向,那么可以在标头声明之后尝试使用构造exit;。否则使用JavaScript。