MySQL網頁內容重定向我的URL像這樣的.htaccess在URL
mysite.com/view.php?id=123
我已經改變了的URL看起來像這樣與的.htaccess
mysite.com/123/page-title.html
現在,由於「頁面標題」部分不是原始URL的一部分,而是來自與id「123」對應的mysql表的信息, ,我該如何將舊網址重定向到新網址?
當然要有一定的PHP參與,但我不知道如何寫在.htaccess ...
MySQL網頁內容重定向我的URL像這樣的.htaccess在URL
mysite.com/view.php?id=123
我已經改變了的URL看起來像這樣與的.htaccess
mysite.com/123/page-title.html
現在,由於「頁面標題」部分不是原始URL的一部分,而是來自與id「123」對應的mysql表的信息, ,我該如何將舊網址重定向到新網址?
當然要有一定的PHP參與,但我不知道如何寫在.htaccess ...
現在,由於「頁面標題」部分不是原始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中你不需要其他任何東西。
太棒了。甚至沒有想到這一點。謝謝! – TJE