0

我有这个重写模式:/blog/post-url-variable-ID,它工作正常。

Options +FollowSymlinks
RewriteEngine on
RewriteRule /blog/([a-zA-Z0-9\-]+)-([0-9]+) /post.php?url=$1&id=$2

由于 ID 是从 dba 中选择数据的决定性变量,我想通过手动重写 URL 来避免重复内容。

例如:由于ID而/blog/my-new-post-777具有相同的内容。/blog/anything-written-here-777

所以我写了这段代码,它在本地运行完美,直接重定向到好的 URL。

<?php include("connect.php");

$result = mysqli_query($con,"SELECT * FROM blog WHERE id = ".($_GET['id']));
$data = mysqli_fetch_array($result);

if($data["url"]!=$_GET["url"]) {
    header("Location: http://www.mywebsite.com/blog/".$data["url"]."-".$data["id"]);          
}

?>

由于我将它转移到我的服务器,它不再工作。我还尝试通过 header:location 直接简化到主页,但它看起来不起作用。

我意识到当 header:location 位于页面的最顶部时,它可以正常工作。但由于 $variables 在它下面,它不能调用它们。

有任何想法吗 ?我现在很迷茫!

4

1 回答 1

0

我找到了解决方案..以及编码错误。感谢@T0xicCode 带来它。

header:Location不能在打印语句或输出之后调用。在下面的例子中,我在一connect.php开始就包含了一个 php 文件。该文件以 output 开头<?php和结尾?>。一旦我删除了从技术上讲在header:Location通话之前的输出,一切正常。

谢谢 !

于 2015-02-11T01:00:41.237 回答