.htaccess重定向与url中的mysql内容

时间:2012-10-23 02:46:00

标签: php mysql .htaccess

我有这样的网址

mysite.com/view.php?id=123

我已使用.htaccess

更改了网址

mysite.com/123/page-title.html

现在,由于“页面标题”部分不是原始URL的一部分,并且是来自与id“123”对应的mysql表的信息,我如何将旧URL重定向到新URL? ?

当然必须涉及一些PHP,但我不知道如何在.htaccess中编写...

2 个答案:

答案 0 :(得分:2)

  

现在,由于“页面标题”部分不是原始URL的一部分,并且是来自与id“123”对应的mysql表的信息,我如何将旧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中不需要任何其他东西。

答案 1 :(得分:0)

看看这个tutorial.它应该很容易解释。