dede会员伪静态规则如何正确配置?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文
  1. 服务器端配置:让服务器能够将形如 /member/123.html 的请求正确地转发给 member.php 文件处理。
  2. DedeCMS 后台配置:告诉 DedeCMS 使用新的 URL 格式,并生成对应的链接。

第一步:服务器端配置 (以 Nginx 为例)

这是最关键的一步,如果服务器配置错误,伪静态将无法工作,这里以目前最常用的 Nginx 服务器为例,Apache 的配置会放在后面。

dede 会员伪静态
(图片来源网络,侵删)

找到 Nginx 配置文件

你的网站配置文件通常位于 /usr/local/nginx/conf/vhost/ 目录下,文件名一般是你的域名,yourdomain.com.conf,你需要用 SSH 或 FTP 连接到你的服务器来编辑这个文件。

在 server { ... } 块内添加伪静态规则

在网站的 server 配置块中,添加以下 rewrite 规则,请确保将其添加在 location / { ... } 之前或其中。

server {
    # ... 其他配置,如 listen, server_name, root 等 ...
    # 会员中心伪静态规则
    location ~ ^/member/ {
        rewrite ^/member/([0-9]+)\.html$ /member/index.php?uid=$1 last;
        rewrite ^/member/([a-zA-Z0-9_-]+)\.html$ /member/index.php?uid=$1 last;
    }
    # 其他 location 配置...
    location / {
        # ... 其他规则 ...
    }
    # ... 其他配置 ...
}

规则解释:

  • location ~ ^/member/ { ... }:匹配所有以 /member/ 开头的 URL。
  • rewrite ^/member/([0-9]+)\.html$ /member/index.php?uid=$1 last;
    • ^/member/([0-9]+)\.html$:匹配形如 /member/123.html 的 URL,([0-9]+) 是一个捕获组,用来提取会员的 ID。
    • /member/index.php?uid=$1:将匹配到的 URL 重写为 /member/index.php?uid=123$1 代表第一个捕获组的内容(即会员 ID)。
    • last:表示匹配到这个规则后,停止继续匹配 rewrite 规则,并将处理权交给 location /member/index.php
  • rewrite ^/member/([a-zA-Z0-9_-]+)\.html$ /member/index.php?uid=$1 last;
    • 这个规则是可选的,如果你的会员 ID 是用户名(字母、数字、下划线、短横线)而不是纯数字,就需要这个规则,它用于匹配形如 /member/username.html 的 URL。

检查并重载 Nginx 配置

保存配置文件后,执行以下命令检查语法是否正确,然后重载 Nginx 使配置生效。

dede 会员伪静态
(图片来源网络,侵删)
# 检查语法
nginx -t
# 如果显示 syntax is ok 和 test is successful,则重载配置
nginx -s reload

第二步:DedeCMS 后台配置

服务器配置好后,你需要登录 DedeCMS 后台,开启并设置伪静态。

开启伪静态功能

  1. 登录 DedeCMS 后台。
  2. 进入 “系统” -> “系统基本参数” -> “核心设置”
  3. 找到 “是否使用伪静态” 选项,将其设置为 “是”
  4. 点击“保存”按钮。

设置会员中心伪静态规则

  1. 在后台左侧菜单中,找到 “系统” -> “伪静态管理” -> “会员伪静态规则”
  2. 你会看到一个文本框,里面需要填写规则。将下面提供的规则完整复制并粘贴进去,覆盖掉原有的内容。
#会员空间
member/{dede:field.userid/}.html
member/index.php?uid={dede:field.userid/}
#会员主页
member/{dede:field.username/}.html
member/index.php?uid={dede:field.username/}

规则解释:

  • member/{dede:field.userid/}.html:这是前台模板中需要使用的 URL 格式,在会员列表页,链接会写成 <a href="/member/{dede:field.userid/}.html">
  • member/index.php?uid={dede:field.userid/}:这是 DedeCMS 内部实际调用的动态文件,当系统生成链接时,会把 {dede:field.userid/} 替换成真实的会员 ID 或用户名。

填写好规则后,点击“更新”按钮。


第三步:修改前台模板 (可选但推荐)

为了确保所有指向会员中心的链接都使用新的伪静态格式,你可能需要修改几个关键的模板文件。

  1. 修改会员列表页模板

    • 路径:/templets/default/member/ 目录下的 list_fulllist.htm 或相关列表模板。
    • 找到生成会员链接的代码,通常是:
      <a href='{dede:field.spaceurl/}' target='_blank'>{dede:field.username/}</a>
    • 将其修改为明确指向伪静态格式:
      <a href='/member/{dede:field.userid/}.html' target='_blank'>{dede:field.username/}</a>

      注意:这里我们使用了 {dede:field.userid/},因为它在会员列表中是唯一且稳定的。

  2. 修改评论等模块中的会员链接

    • 在评论、留言等模块中,也可能有指向会员空间的链接。
    • 找到相应的模板文件(如 /templets/default/feedback.htm),将类似 <a href='{dede:global.cfg_memberurl/}/?uid={dede:field.userid}'> 的代码修改为 <a href='/member/{dede:field.userid/}.html'>

第四步:更新缓存和生成

完成以上所有步骤后,为了确保设置生效,建议:

  1. 在后台执行 “更新系统缓存”
  2. 如果你的网站已经生成过 HTML,可以执行 “更新首页”“更新文档HTML”,让新生成的页面链接都使用新格式。

附:Apache 服务器配置

如果你的服务器是 Apache,配置会简单很多,通常只需要一个 .htaccess 文件。

  1. 在 DedeCMS 安装根目录下,找到 httpd.ini.txt 文件(如果没有,可以创建一个 .htaccess 文件)。
  2. 确保文件中包含以下规则:
# 会员中心伪静态规则
RewriteRule ^member/([0-9]+)\.html$ /member/index.php?uid=$1 [L]
RewriteRule ^member/([a-zA-Z0-9_-]+)\.html$ /member/index.php?uid=$1 [L]
  1. httpd.ini.txt 重命名为 .htaccess
  2. 确保你的 Apache 开启了 mod_rewrite 模块。

常见问题排查

  • 404 Not Found
    • 原因1:Nginx/Apache 伪静态规则配置错误或未生效,请检查服务器配置文件是否正确保存并重载了服务。
    • 原因2:后台的“会员伪静态规则”为空或格式错误,请确保规则已正确填写并更新。
  • 500 Internal Server Error
    • 原因:Nginx 配置语法错误,请使用 nginx -t 命令检查语法。
  • 页面打开,但 URL 没有变化
    • 原因:模板文件中的链接还是旧的动态格式,请检查并修改相关模板文件。

按照以上步骤一步步操作,你的 DedeCMS 会员中心伪静态应该就能成功设置了。

-- 展开阅读全文 --
头像
C语言中bwlabel函数如何实现连通区域标记?
« 上一篇 04-14
织梦CMS是什么?
下一篇 » 04-14

相关文章

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

目录[+]