2012-10-23 25 views
0

MySQL網頁內容重定向我的URL像這樣的.htaccess在URL

mysite.com/view.php?id=123

我已經改變了的URL看起來像這樣與的.htaccess

mysite.com/123/page-title.html

現在,由於「頁面標題」部分不是原始URL的一部分,而是來自與id「123」對應的mysql表的信息, ,我該如何將舊網址重定向到新網址?

當然要有一定的PHP參與,但我不知道如何寫在.htaccess ...

回答

2

現在,由於「頁面標題」部分不是原始URL的一部分,並且是來自與ID「123」對應的mysql表的信息,所以我如何將舊URL重定向到新的URL?

你唯一需要的重寫規則是爲了使更好看的URL路由view.php,它聽起來就像你已經有了。也許看起來是這樣的:

RewriteCond %{REQUEST_FILENANE} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9]+)/([^/]+)\.html /view.php?id=$1 [L] 

當該請求到達view.php可以檢查$_SERVER['REQUEST_URI']變量,它看起來就像'/123/page-title.html'。當你看到這一點時,你就知道只是爲了提供內容並完成它。

然而,當view.php$_SERVER['REQUEST_URI'],它看起來像'/view.php?id=123',那麼你知道有人請求的頁面http://mysite.com/view.php?id=123,而不是更好看網址。當發生這種情況時,view.php需要使用$_GET['id']的消毒值從數據庫中查找頁面標題,然後創建一個重定向(所有這一切需要做的事情被印刷到瀏覽器之前):

喜歡的東西:

header('HTTP/1.1 301 Moved Permanently'); 
    header('Location: /' . $id . '/' . urlencode($page-title) . '.html'); 
    exit(); 

這會將瀏覽器重定向到頁面http://mysite.com/view.php?id=123。在htaccess中你不需要其他任何東西。

+0

太棒了。甚至沒有想到這一點。謝謝! – TJE

0

退房這個tutorial.應該很容易解釋這一切。

+0

這似乎並沒有回答我的問題。我已閱讀該教程,並找不到解決方案。也許再次讀我的問題。我已經重寫了網址。我想要301,但在第二個url中存儲在數據庫中的原始url中缺少信息。只有id可以檢索這個標題。 – TJE

+0

你剛纔沒有讀到它。 –