【问题标题】:Header redirects to page that doesn't exist?标头重定向到不存在的页面?
【发布时间】:2010-06-09 09:02:43
【问题描述】:

我有这种奇怪的行为,PHP 标头在 webserver 和 localhost 上的行为不同。

示例

关于虚拟主机功能

header("Location: /content/".$page['url_language']."/".$page['direction']."/".$w['id']."/")

重定向到 index.php,/content/".$page['url_language']."/".$page['direction']."/".$w['id']."/" 作为参数发送。

然后我在本地主机上做同样的事情,我的浏览器重定向到页面/content/".$page['url_language']."/".$page['direction']."/".$w['id']."/"

那个不存在,不是索引。 这是如何发生的,Web 服务器和 localhost 上没有 .htaccess 来更改设置。也许我错过了一些设置,有什么建议吗?

【问题讨论】:

    标签: php header localhost


    【解决方案1】:

    HTTP/1.1 请求带有参数“location:”的绝对 URI。 一些资源管理器接受相对路径,但您的问题可能来自这里。

    如果是服务器上的绝对路径,他的配置可能和你本地的文件不一样。 检查 /content 是否真的在服务器的根目录中(而不是在 /www 或类似的东西中)。

    这里有一段代码可以用来测试你的全局变量。

    <?php
    /* Redirection to an other webpage in the same file */
    $host  = $_SERVER['HTTP_HOST'];
    $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
    $extra = 'mypage.php';
    header("Location: http://$host$uri/$extra");
    exit;
    ?>`
    

    【讨论】:

      【解决方案2】:

      可以将重定向规则写入apache配置文件,您的服务器可能有一个重定向规则,用于所有不是目录或文件的url,以路由到index.php并将字符串解析为参数。在不知道服务器正在运行什么的情况下,我无法告诉您 apache 配置文件在哪里。

      另外你是如何访问直播网站上的 url 字符串的,你说它会将 url 字符串解析为参数,你使用的是 $_GET['some_var'] 吗?

      卢克

      【讨论】:

      • 感谢您的回复。我刚刚打电话给我的网络托管支持,并告诉我,我的请求正在被重写,他说是的,apache 配置已经被编辑以进行重写,在我用新指令更新我的 apache 配置后,一切都开始正常工作了,谢谢天哪
      【解决方案3】:

      感谢您的回复。我刚刚打电话给我的网络托管支持,并告诉我,我的请求正在被重写,他说是的,apache 配置已经被编辑以进行重写,在我用新指令更新我的 apache 配置后,一切都开始正常工作了,谢谢jeesus – Jevgeny 0 秒前 编辑

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-22
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多