迪巴拉 发表于 2022-10-14 17:54:13

如何获取门户文章对应的帖子的URL?

最近网站要搬家,原社区有部分帖子生成了门户文章。老网站的部分门户文章和帖子都有不错的排名。为了继承SEO权重,老站的帖子和门户文章URL要301跳转到新站的文章URL。原这些门户文章中部分可以通过直接点击“查看全部评论”跳转到原帖子来获取URL,但有一些文章没有“查看全部评论”,所以通过前端采集没法获得跳转的原帖子地址。
现在想问:
如何获取DZ门户文章对应的帖子的URL?
我知道答案 回答被采纳将会获得5 金币 + 1 金币 已有0人回答

Discuz智能体 发表于 2025-3-16 23:16:19

要获取Discuz门户文章对应的帖子的URL,可以通过数据库查询来实现。门户文章和帖子之间的关联信息通常存储在数据库中,具体来说,门户文章对应的帖子ID存储在`portal_article_title`表中。

以下是具体的步骤:

### 1. 确定门户文章的ID
首先,你需要知道门户文章的ID。可以通过以下SQL查询来获取门户文章的ID和对应的帖子ID:

SELECT aid, tid FROM pre_portal_article_title;

- `aid` 是门户文章的ID。
- `tid` 是对应的帖子ID。

### 2. 获取帖子的URL
一旦你有了帖子ID (`tid`),你可以通过以下方式生成帖子的URL:

$tid = 12345; // 假设这是你获取到的帖子ID
$url = "https://www.yourdomain.com/forum.php?mod=viewthread&tid=" . $tid;

### 3. 批量处理
如果你需要批量处理多个门户文章,可以使用以下SQL查询来获取所有门户文章及其对应的帖子URL:

SELECT a.aid, a.tid, CONCAT('https://www.yourdomain.com/forum.php?mod=viewthread&tid=', a.tid) AS thread_url
FROM pre_portal_article_title a;

### 4. 301重定向
在获取到门户文章和对应帖子的URL后,你可以在新站上设置301重定向规则。具体实现方式取决于你使用的服务器环境(如Apache、Nginx等)。

#### Apache示例:
Redirect 301 /old-article-url https://www.newdomain.com/new-article-url

#### Nginx示例:
location /old-article-url {
    return 301 https://www.newdomain.com/new-article-url;
}

### 5. 自动化脚本
如果你有大量的门户文章需要处理,可以编写一个PHP脚本来自动生成301重定向规则。以下是一个简单的示例:

<?php
// 假设你已经连接到数据库
$query = "SELECT a.aid, a.tid, CONCAT('https://www.yourdomain.com/forum.php?mod=viewthread&tid=', a.tid) AS thread_url FROM pre_portal_article_title a";
$result = $db->query($query);

while ($row = $result->fetch_assoc()) {
    $old_url = "https://www.olddomain.com/portal.php?mod=view&aid=" . $row['aid'];
    $new_url = $row['thread_url'];
    echo "Redirect 301 $old_url $new_url\n";
}
?>

这个脚本会输出所有需要设置的301重定向规则,你可以将这些规则直接添加到你的服务器配置文件中。

### 总结
通过查询数据库中的`portal_article_title`表,你可以获取门户文章对应的帖子ID,并生成对应的帖子URL。然后,你可以通过服务器配置或脚本实现301重定向,以继承SEO权重。

如果你有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-19 03:54:07

要获取Discuz门户文章对应的帖子URL,可以通过以下几种方法来实现:

### 方法一:通过数据库查询
1. **找到门户文章的ID**:首先,你需要知道门户文章的ID。这个ID可以在门户文章的管理后台或者URL中找到。

2. **查询数据库**:Discuz的门户文章和帖子之间的关系通常存储在数据库中。你可以通过查询数据库来获取对应的帖子ID。

   - 打开数据库管理工具(如phpMyAdmin)。
   - 找到门户文章表 `pre_portal_article`,其中 `aid` 是门户文章的ID。
   - 在 `pre_portal_article` 表中,找到 `tid` 字段,这个字段存储了对应的帖子ID。

3. **获取帖子URL**:一旦你有了帖子ID,你可以通过以下方式生成帖子的URL:
   http://yourdomain.com/forum.php?mod=viewthread&tid=帖子ID

### 方法二:通过Discuz的API或插件
如果你不想直接操作数据库,可以通过编写一个简单的插件或使用Discuz的API来获取门户文章对应的帖子URL。

1. **编写插件**:你可以编写一个插件,通过门户文章的ID来查询对应的帖子ID,并生成帖子URL。

   - 在插件中,你可以使用 `C::t('portal_article')->fetch_by_aid($aid)` 来获取门户文章的详细信息。
   - 然后通过 `$article['tid']` 获取对应的帖子ID。
   - 最后生成帖子URL并输出。

2. **使用API**:如果你有开发能力,可以通过Discuz的API来获取这些信息。你可以参考Discuz的开发手册来了解如何调用API。

### 方法三:通过后台管理工具
如果你有访问Discuz后台的权限,可以通过后台管理工具来查找门户文章对应的帖子。

1. **进入门户文章管理**:在Discuz后台,找到“门户” -> “文章管理”。
2. **查找文章**:在文章列表中,找到你需要查找的门户文章。
3. **查看关联帖子**:在文章详情页面,通常会显示关联的帖子ID或直接提供跳转链接。

### 方法四:通过日志或历史记录
如果你有访问服务器日志的权限,可以通过分析日志来查找门户文章和帖子之间的关联。

1. **分析访问日志**:查找门户文章的访问记录,看看是否有跳转到帖子的记录。
2. **查找跳转URL**:在日志中查找跳转URL,通常会有从门户文章跳转到帖子的记录。

### 总结
通过以上方法,你可以获取到门户文章对应的帖子URL。最直接的方法是通过数据库查询,但如果你不想直接操作数据库,可以通过编写插件或使用API来实现。如果你有后台权限,也可以通过后台管理工具来查找。

希望这些方法能帮助你顺利完成网站搬家并保留SEO权重。如果有更多问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 如何获取门户文章对应的帖子的URL?