标题重定向到不存在的页面?

时间:2010-06-09 09:02:43

标签: php header localhost

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

示例

关于网络托管功能

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

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

但是我在localhost上也这样做,我的浏览器重定向到页面/content/".$page['url_language']."/".$page['direction']."/".$w['id']."/"

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

3 个答案:

答案 0 :(得分:0)

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;
?>`

答案 1 :(得分:0)

可以将重定向规则写入apache配置文件,您的服务器可能对所有不是directorys的URL或要转发到index.php的文件具有重定向规则,并将该字符串解析为参数。在不知道运行服务器的情况下,我无法告诉您apache配置文件的位置。

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

答案 2 :(得分:0)

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