dede搜索页伪静态如何设置?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文

伪静态的基本原理

我们要明白伪静态的原理:

dede 搜索页伪静态
(图片来源网络,侵删)
  1. URL 重写:通过服务器配置(如 Apache 的 .htaccess 或 Nginx 的 rewrite 规则),将一个看起来像静态文件的 URL(如 /search/关键词.html)映射到服务器上一个实际的动态脚本(如 /plus/search.php)。
  2. 参数传递:在这个过程中,URL 中的关键词等信息需要被正确地解析并传递给动态脚本。/search/织梦cms.html 需要让 search.php 知道搜索的关键词是“织梦cms”。

准备工作:开启 Rewrite 模块

在设置伪静态规则之前,必须确保你的 Web 服务器已经开启了 Rewrite 模块。

  • Apache 服务器
    1. 检查 httpd.conf 文件中是否存在 LoadModule rewrite_module modules/mod_rewrite.so 并且没有被注释掉(去掉前面的 )。
    2. 确保你的网站虚拟主机配置中允许了 .htaccess 文件覆盖 (AllowOverride All)。
  • Nginx 服务器
    1. 确保编译 Nginx 时包含了 http_rewrite_module 模块(通常默认包含)。
    2. 伪静态规则通常写在网站的配置文件(如 vhost/your_domain.conf)的 server 块内。

方法一:使用 DedeCMS 内置的“仅动态”选项(推荐,最简单)

这是最安全、最简单的方法,DedeCMS 已经为我们做好了大部分工作。

步骤 1:修改搜索页模板

  1. 登录你的 DedeCMS 后台。

  2. 进入 【模板】 -> 【默认模板管理】

    dede 搜索页伪静态
    (图片来源网络,侵删)
  3. 找到并点击 【搜索页面模板】 (search.htm) 进行编辑。

  4. 在模板中,找到搜索表单的 <form> 标签,默认情况下,它的 action 属性可能是 plus/search.php

  5. action 属性修改为你的伪静态目标 URL。

    修改前:

    dede 搜索页伪静态
    (图片来源网络,侵删)
    <form name="formsearch" action="/plus/search.php">

    修改后:

    <form name="formsearch" action="/search">

    或者更规范的写法(如果你的伪静态规则是 .html

    <form name="formsearch" action="/search.html">

    注意:这里我们只修改了 action 的路径,<input name="q"> (或 keyword) 等输入框的 name 属性不需要改变,DedeCMS 的核心处理文件会自动识别。

步骤 2:设置后台参数

  1. 进入 DedeCMS 后台 【系统】 -> 【系统基本参数】 -> 【核心设置】

  2. 找到 “搜索URL规则” 这一项。

  3. 将其修改为 “仅动态”

    为什么是“仅动态”? 这个选项的名称可能有点误导,选择它后,DedeCMS 不会为搜索结果页生成实际的静态 HTML 文件,而是保证所有搜索请求都由 search.php 这个动态脚本处理,这对于伪静态来说是必须的,因为我们需要 search.php 来接收 URL 中的参数并生成页面,服务器上的 Rewrite 规则会把漂亮的 URL 请求转发给这个 search.php

步骤 3:添加服务器伪静态规则

这是最关键的一步,告诉服务器如何将漂亮的 URL 转发给 search.php

对于 Apache 服务器:

在你的网站根目录下创建或修改 .htaccess 文件,并添加以下规则:

# 将 /search/关键词 或 /search/关键词.html 指向 search.php
RewriteRule ^search/(.*)$ /plus/search.php?q=$1 [L]
# 或者,如果你使用 /search.html?keyword=... 的形式
# RewriteRule ^search\.html$ /plus/search.php [L,QSA]

解释

  • ^search/(.*)$:匹配所有以 search/ 开头,后面跟着任意字符()的 URL。
  • /plus/search.php?q=$1:将匹配到的内容(即关键词)作为 q 参数传递给 plus/search.php
  • [L]:Last Rule,表示匹配到这条规则后就不再继续匹配其他规则。
  • [QSA]:Query String Append,表示保留原有的查询字符串(如 &pagesize=10)。

对于 Nginx 服务器:

在你的 Nginx 网站配置文件(如 your_domain.conf)的 server 块内添加以下规则:

# 将 /search/关键词 或 /search/关键词.html 指向 search.php
rewrite ^/search/(.*)$ /plus/search.php?q=$1 last;
# 或者,如果你使用 /search.html?keyword=... 的形式
# rewrite ^/search\.html$ /plus/search.php last;

解释

  • ^/search/(.*)$:匹配所有以 /search/ 开头的 URL。
  • /plus/search.php?q=$1:将匹配到的内容作为 q 参数传递给 plus/search.php
  • last:停止处理当前的 rewrite 规则,并搜索与修改后的 URI 匹配的 location。

方法二:使用现成的 DedeCMS 搜索伪静态插件

如果你觉得手动修改代码和规则比较麻烦,或者你的 DedeCMS 版本比较旧,可以使用插件。

  1. 搜索插件:在 DedeCMS 官方论坛、DedeQQ.com 或其他 DedeCMS 资源网站上搜索“搜索伪静态插件”。
  2. 安装插件:下载插件后,按照插件的说明文档进行安装,通常这些插件会自动帮你完成模板修改、参数设置和规则写入,非常方便。
  3. 优点:操作简单,一键完成,兼容性可能更好。
  4. 缺点:需要信任第三方插件的代码,可能存在安全风险。

常见问题与注意事项

  1. 404 Not Found 错误

    • 原因:最常见的原因是服务器 Rewrite 模块未开启,或者伪静态规则写错了、放错了位置。
    • 解决:仔细检查 .htaccess 文件是否在网站根目录,Nginx 规则是否在正确的 server 块内,可以使用在线的 Rewrite 测试工具来验证你的规则。
  2. 搜索结果为空或参数未传递

    • 原因:可能是 formaction 路径不正确,或者 inputname 属性被修改了导致 DedeCMS 无法识别参数。
    • 解决:确保 action 指向你伪静态的路径(如 /search),并且输入框的 name 仍然是 qkeyword
  3. 分页链接失效

    • 原因:搜索结果页的分页链接通常是动态的,如果服务器没有对分页的 URL 做重写,就会导致 404。
    • 解决:你需要检查分页的生成代码,并确保你的 Rewrite 规则能够覆盖分页 URL,如果分页 URL 是 /plus/search.php?q=关键词&PageNo=2,你的规则需要能处理这种情况。[QSA] 标志(Apache)或 last 标志(Nginx)可以解决这个问题。
  4. URL 格式

    • /search/关键词.html (推荐):看起来最像静态页面。
    • /search/关键词/:也很常见。
    • /search.html?keyword=关键词:这是伪静态中的一种,但 URL 中仍然有 ,不够“伪”。
    • 选择一种你喜欢的格式,并确保 Rewrite 规则和模板 action 路径与之对应。
步骤 操作 关键点
后台设置 【系统基本参数】->【核心设置】->【搜索URL规则】设置为 “仅动态” 保证请求由 search.php 处理
修改模板 编辑 search.htm,修改表单 action/search/search/关键词.html 让前端请求指向伪静态路径
配置服务器 .htaccess (Apache) 或 Nginx 配置中添加 Rewrite 规则 核心步骤,实现 URL 重写
测试 清除浏览器缓存,访问伪静态 URL,检查结果和分页是否正常 验证每一步是否成功

对于大多数用户来说,方法一 是最值得推荐的,它既安全又能让你完全理解其工作原理,如果在操作中遇到问题,可以仔细检查以上提到的每个细节。

-- 展开阅读全文 --
头像
织梦CMS自定义查询如何实现?
« 上一篇 今天
织梦模板企业如何快速适配手机?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]