PHP重写url但保留锚标记

时间:2013-04-23 02:51:40

标签: php url-rewriting

是否可以重写包含#anchor标记的网址 - 并将#anchor标记附加到新网址?

在我的新闻php脚本中,我检查以确保request_uri与我存储MySQL数据库的数据相匹配。如果没有,我将301标题和标题位置发送到正确的URL。

$uri = $_SERVER['REQUEST_URI'];

// Grab the $sid and $url stored in the MySQL table and set it as $realurl
$realurl = "/$sid/$url/";

if ($uri != $realurl)
{
    Header( "HTTP/1.1 301 Moved Permanently" );
    Header( "Location: $realurl" );
    exit;
}

这对我来说很有用,但问题是我最近在我的新闻页面中添加了一个评论php脚本。根据正在完成的工作,它可以将#comments或#comment_form附加到网址。

有没有办法修改上面的代码,所以如果$ url和$ realurl不匹配 - $ realurl的标题位置+保留可能存在的任何#anchor标记?


解决了问题 - 不确定它是如何工作或为何工作,但我最终做的就是改变:

if ($uri != $realurl)

if (stristr($uri, $realurl) === false)

如果$ uri不包含我的$ realurl,则会重写url并且#anchor标记仍然存在。

1 个答案:

答案 0 :(得分:0)

您是否尝试将锚标记连接到网址的末尾?

$uri = $_SERVER['REQUEST_URI'];

// Grab the $sid and $url stored in the MySQL table and set it as $realurl
$realurl = "/$sid/$url/";

if ($uri != $realurl)
{
    Header( "HTTP/1.1 301 Moved Permanently" );
    Header( "Location: $realurl".#someanchortag);
    exit;
}