我有这种重写模式:/ 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"]);
}
?>
自从我将它转移到我的服务器后,它就不再工作了。我还尝试通过标题简化:直接将位置放到主页面上,但看起来它不起作用。
我意识到当标题:位置位于页面顶部时,它可以正常工作。但由于$变量在它之下,它无法调用它们。
有什么想法吗?我现在很迷茫!
答案 0 :(得分:0)
我找到了解决方案......以及编码错误。感谢@ T0xicCode带来它。
打印语句或输出后无法调用 header:Location
。在下面的例子中,我在一开始就包含了一个名为connect.php
的php文件。此文件以<?php
开头,以输出?>
结尾。一旦我删除了输出,从技术上讲,就在header:Location
调用之前,一切正常。
谢谢!