使用表单提交未找到404页面
在本地主机中一切正常。
但我有一个托管在/ public_html /网站文件夹中,我有主要的WordPress网站。 我有另一个PHP网站,它在/ public_html / site / BETA中没有htaccess。
你可以在这里登录:http://yoursocialtool.com/BETA/login.php用户:堆栈密码:溢出现在的问题是,当我尝试登录后使用表单提交到同一页面登录如http:// yoursocialtool.com/BETA/dashboard.php它说:
404页面不存在!
但如果我直接把URL放在浏览器地址栏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仅在注销提交后处理它。
注意:我的本地主机只有/ public_html / site / BETA下的部分网站。 所以本地主机没有任何htaccess或wordpress。
在本地主机中一切正常。
仅仅因为它在本地主机上工作,它不一定需要到处工作。 这就是为什么您的服务器配置的开发版本与稍后部署它的服务器配置接近(如果不完全相同)这一点固有地重要。
为此使用虚拟化,然后尝试在本地主机上重现404。
在两端获得相同的行为是对问题进行故障排除的第一个合理检查。 根据您在问题中提供的最新信息,这是我可以提供的最佳建议。
简短的答案是:两个系统之间的配置不同。 请注意,您可以在两个系统上使用相同的配置,不仅包括配置指令,还包括所涉及的所有软件的相同版本,例如相同版本的Web服务器,相同操作系统和相同版本的PHP(尽管PHP似乎不是这里的问题)。
我将网站移到了一个子域。 之后,我看到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。