gpt4 book ai didi

php - .htaccess 重定向,url 中包含 mysql 内容

转载 作者:行者123 更新时间:2023-11-29 08:43:56 26 4
gpt4 key购买 nike

我有这样的网址

mysite.com/view.php?id=123

我已使用 .htaccess 将 URL 更改为如下所示

mysite.com/123/page-title.html

现在,由于“page-title”部分不是原始 URL 的一部分,而是来自与 id“123”对应的 mysql 表的信息,我如何 301 将旧 URL 重定向到新 URL ?

肯定涉及到一些PHP,但我不知道如何在.htaccess中编写它......

最佳答案

Now, since the "page-title" part wasn't part of the original URL, and is information from a mysql table that corresponds to the id "123", how can I 301 redirect the old URL's to the new URL's ?

您需要的唯一重写规则是使 view.php 的 URL 路由看起来更漂亮,这听起来您已经有了。大概看起来像这样:

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

当该请求到达 view.php 时,您可以检查 $_SERVER['REQUEST_URI'] 变量,它看起来像 '/123/页面标题.html'。当您看到这一点时,您就知道只需提供内容即可完成。

但是,当 view.php 查看 $_SERVER['REQUEST_URI'] 时,它看起来像 '/view.php?id=123' ,那么您就知道有人请求了该页面 http://mysite.com/view.php?id=123,而不是看起来更漂亮的 URL。发生这种情况时,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 中不需要任何其他内容。

关于php - .htaccess 重定向,url 中包含 mysql 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com