织梦网站如何生成伪静态

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文

核心概念

在开始之前,我们先简单理解一下几个关键概念:

织梦网站如何生成伪静态
(图片来源网络,侵删)
  1. 静态页面.html 结尾的网页,服务器直接将文件发送给浏览器,加载速度快,对搜索引擎友好。
  2. 动态页面.php 结尾的网页,服务器需要执行PHP代码,从数据库中查询数据,然后生成HTML内容再发送给浏览器,加载相对慢一些。
  3. 伪静态:本质上还是动态页面,但通过服务器重写规则,将一个看起来像静态页面的URL(如 https://www.example.com/abc.html)映射到一个实际的动态脚本(如 https://www.example.com/abc.php),它不需要生成真实的HTML文件,只是改变了URL的显示方式。

第一步:检查并配置服务器环境

伪静态的实现依赖于服务器的模块,最常用的是 Apache 的 mod_rewrite 模块和 Nginx 的 rewrite 功能,你需要根据你的服务器环境进行配置。

Apache 服务器配置

这是最常见的情况,尤其是虚拟主机用户。

a) 检查 mod_rewrite 模块是否开启

虚拟主机商已经默认开启了,如果没有,你需要联系你的主机商开启,或者自己修改 httpd.conf 配置文件,找到下面这行并去掉前面的 : LoadModule rewrite_module modules/mod_rewrite.so

织梦网站如何生成伪静态
(图片来源网络,侵删)

b) 创建或修改 .htaccess 文件

在你的网站根目录(即 dede 文件夹所在的同一级目录)下,找到或创建一个名为 .htaccess 的文件,如果文件不存在,你可以新建一个。 完整复制**并粘贴到 .htaccess 文件中:

# 织梦伪静态规则
<IfModule mod_rewrite.c>
  RewriteEngine On
  # 如果请求的是一个真实存在的文件或目录,则直接访问
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  # 否则,将所有请求重写到 index.php 上
  RewriteRule ^(.*)$ /index.php/$1 [QSA,PT,L]
</IfModule>

注意:

  • /index.php/ 这里的路径需要根据你的网站入口文件调整,如果你的网站入口文件在根目录,/index.php/,如果是在子目录,/cms/,那就需要写成 /cms/index.php/
  • [QSA,PT,L] 是标志位,分别代表:
    • QSA (Query String Append):保留原有的查询字符串。
    • PT (Pass Through):将重写后的URL交给其他模块处理,这里主要是交给 mod_rewrite 继续处理 index.php
    • L (Last):这是最后一条规则,匹配到此规则后就不再继续匹配后续规则。

c) 设置目录权限

织梦网站如何生成伪静态
(图片来源网络,侵删)

确保你的网站根目录对Web服务器有写入权限(通常是755),织梦在生成栏目或文章时,可能会需要修改 .htaccess 文件。


Nginx 服务器配置

如果你使用的是 Nginx(如云服务器、Vultr、DigitalOcean等),配置方式有所不同。

a) 修改 Nginx 配置文件

你需要编辑你的 Nginx 站点配置文件,通常位于 /etc/nginx/sites-available/ 目录下(具体路径可能因服务器而异)。

server 块中,添加以下 rewrite 规则:

# 织梦伪静态规则
rewrite "^/index\.html$" /index.php last;
rewrite "^/special/index\.html$" /special/index.php last;
rewrite "^/data/([^\.]+)\.html$" /data/index.php?$1 last;
rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last;
rewrite "^/plus/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2 last;
rewrite "^/plus/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
rewrite "^/plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2&totalresult=$3 last;
rewrite "^/plus/view-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2&totalresult=$3 last;
rewrite "^/tags\.html$" /tags.php last;
rewrite "^/tag/([^\.]+)\.html$" /tags.php?/$1 last;

b) 重载 Nginx 配置

保存配置文件后,在SSH中执行以下命令使配置生效:

nginx -s reload
# 或者
systemctl reload nginx

第二步:配置织梦CMS后台

服务器配置完成后,还需要在织梦后台进行设置。

  1. 登录织梦后台你的域名/dede/

  2. 进入“系统” -> “系统基本参数”

  3. 修改核心设置

    • 是否使用伪静态:选择 “是”
    • 栏目默认页命名规则:通常建议设置为 default.html
    • 文章命名规则:可以根据需要设置,arc-{aid}-{typedir}-{typeid}-{click}-{title}-{ptime}.html
      • {aid}: 文章ID
      • {typedir}: 栏目目录
      • {typeid}: 栏目ID
      • {click}: 点击量
      • {title}: 文章标题(会进行拼音或字符转换)
      • {ptime}: 发布时间
  4. 进入“核心” -> “栏目管理”

    • 选择任意一个栏目,点击“更改”。
    • 在“栏目选项”中,勾选“使用动态页”
    • 点击“确定”保存。
    • 重要:你需要对你网站所有栏目都进行此操作,新建栏目时也要记得勾选。
  5. 进入“核心” -> “发布” -> “批量更新文档HTML”

    • 这一步是让织梦根据你新的伪静态规则,更新所有已生成内容的链接。
    • 选择“所有栏目”,然后点击“开始执行”。
    • 系统会重新生成所有页面的链接,使其符合伪静态的格式。

第三步:测试与验证

完成以上所有步骤后,你的网站伪静态就设置成功了,现在需要测试一下是否生效。

  1. 访问首页:在浏览器中访问 你的域名/index.html,如果能正常打开,说明首页伪静态成功。
  2. 访问栏目页:访问 你的域名/plus/list-1.html1 是一个栏目ID),如果能正常显示该栏目的文章列表,说明栏目页伪静态成功。
  3. 访问文章页:访问 你的域名/plus/view-1-1.html1-1 是一个文章ID和页码),如果能正常打开文章内容,说明文章页伪静态成功。

如果无法访问,请检查:

  • URL拼写错误:确保 .html 后缀没有拼错。
  • 服务器配置:检查 .htaccess (Apache) 或 Nginx 配置文件是否有语法错误,并确保已重载/重启服务器。
  • 后台设置:回到后台检查“系统基本参数”中的“是否使用伪静态”是否为“是”。
  • 栏目设置:检查所有栏目是否都勾选了“使用动态页”。
  • 目录权限:确保Web服务器用户有权限读写相关目录。

常见问题与解决方案

  • Q: 设置伪静态后,网站后台登录不了了?

    • A: 这是因为后台的登录页面也被重定向了,检查你的 .htaccess 文件,确保它没有重写 /dede/ 目录下的文件,你可以在 .htaccess 中添加一条规则来排除 /dede/ 目录:
      <IfModule mod_rewrite.c>
        RewriteEngine On
        # 排除 /dede/ 目录
        RewriteRule ^(dede)/.* - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [QSA,PT,L]
      </IfModule>
  • Q: 为什么我设置的规则不生效?

    • A: 1. 检查服务器是否支持,2. 检查规则路径是否正确,特别是 index.php 的位置,3. 清除浏览器缓存或使用无痕模式访问,4. 查看服务器错误日志,通常能找到线索。
  • Q: 织梦自带的伪静态规则和我网站的不一样,能用吗?

    • A: 我上面提供的规则是通用性最强的,能处理绝大多数情况,织梦后台可能会提供一些旧的规则,如果你的网站结构特殊,可以尝试使用官方规则,但通常上面提供的规则已经足够。

希望这份详细的教程能帮助你成功为织梦网站配置伪静态!如果遇到问题,可以仔细检查每一步,特别是服务器配置和后台设置这两部分。

-- 展开阅读全文 --
头像
c语言indirection
« 上一篇 02-02
c 语言 namespace
下一篇 » 02-03

相关文章

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

目录[+]