URL重写 - 通过手动重写避免重复内容

时间:2014-06-10 23:09:01

标签: php apache url-rewriting duplicate-content

我有这种重写模式:/ 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来避免重复内容。

例如:/blog/my-new-post-777/blog/anything-written-here-777的内容相同,因为ID。

所以我写了这段代码,它在本地运行PERFECT,直接重定向到好的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"]);          
}

?>

自从我将它转移到我的服务器后,它就不再工作了。我还尝试通过标题简化:直接将位置放到主页面上,但看起来它不起作用。

我意识到当标题:位置位于页面顶部时,它可以正常工作。但由于$变量在它之下,它无法调用它们。

有什么想法吗?我现在很迷茫!

1 个答案:

答案 0 :(得分:0)

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

打印语句或输出后无法调用

header:Location。在下面的例子中,我在一开始就包含了一个名为connect.php的php文件。此文件以<?php开头,以输出?>结尾。一旦我删除了输出,从技术上讲,就在header:Location调用之前,一切正常。

谢谢!