0

在 localhost 中一切正常。

但是我有一个主机,在 /public_html/site 文件夹中我有主 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。

4

2 回答 2

0

在 localhost 中一切正常。

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

为此,请使用虚拟化并尝试在您的本地主机上重现 404。

在两端获得相同的行为是解决问题时要做的第一个理智的检查。根据您在问题中提供的当前信息,这是我能给出的最佳建议。

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

于 2013-07-28T14:47:26.180 回答
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。

于 2013-07-30T20:07:21.173 回答