2013-04-23 91 views
0

是否有可能重寫包含#anchor標記的URL並將該#anchor標記追加到新的url?PHP重寫URL但保留錨標記

在我的新聞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。

有什麼辦法可以修改上面的代碼,所以如果$ url和$ realurl不匹配 - 標題位置到$ realurl +保留任何可能存在的#anchor標籤?


問題解決了 - 不知道怎樣和爲什麼它的工作原理,但我落得這樣做改變:

if ($uri != $realurl) 

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

如果$ URI不包含我的$ realurl,url被重寫並且#anchor標籤仍然存在。

+0

錨標籤只能在客戶端解析,所以你可能需要JS。 – Passerby 2013-04-23 03:21:39

回答

0

您是否嘗試將錨標記連接到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".#someanchortag); 
    exit; 
} 
+0

不,因爲取決於正在做什麼,評論腳本可能會追加#comments或#comment_form – 2013-04-23 05:58:06

+0

您可以發佈評論腳本嗎? – adamfish 2013-04-24 00:17:16

+0

我設法解決了這個問題 - (評論腳本是大到無論如何發佈在這裏)。 – 2013-04-24 00:52:35