我有这样的网址
mysite.com/view.php?id=123
我已使用.htaccess
更改了网址mysite.com/123/page-title.html
现在,由于“页面标题”部分不是原始URL的一部分,并且是来自与id“123”对应的mysql表的信息,我如何将旧URL重定向到新URL? ?
当然必须涉及一些PHP,但我不知道如何在.htaccess中编写...
答案 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.它应该很容易解释。