Nginx 伪静态规则
对于 Nginx 环境,您需要将以下规则添加到您网站配置文件中的 location / { ... } 块里,这个文件通常位于 /usr/local/nginx/conf/vhosts/您的域名.conf 或 /etc/nginx/sites-available/您的域名。
规则代码:
location / {
if (!-e $request_filename) {
rewrite "^/index\.html$" /index.php last;
rewrite "^/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last;
rewrite "^/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 last;
rewrite "^/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2 last;
rewrite "^/category/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([0-9]+)\.html$" /plus/list.php?tid=$3 last;
rewrite "^/category/([a-zA-Z0-9]+)/([0-9]+)\.html$" /plus/list.php?tid=$2 last;
rewrite "^/category/([a-zA-Z0-9]+)\.html$" /plus/list.php?tid=$1 last;
rewrite "^/archives/([a-zA-Z0-9]+)/([0-9]+)\.html$" /plus/view.php?arcID=$2 last;
rewrite "^/archives/([0-9]+)\.html$" /plus/view.php?arcID=$1 last;
rewrite "^/tags\.html$" /tags.php last;
rewrite "^/tags/([a-zA-Z0-9]+)\.html$" /tags.php?/$1 last;
rewrite "^/tag/([a-zA-Z0-9]+)\.html$" /tags.php?/$1 last;
rewrite "^/search\.html$" /search.php last;
rewrite "^/search/([a-zA-Z0-9]+)\.html$" /search.php?keyword=$1 last;
rewrite "^/feedback\.html$" /plus/feedback.php last;
rewrite "^/question-([0-9]+)\.html$" /plus/question.php?itemid=$1 last;
rewrite "^/sitemap\.html$" /sitemap.php last;
rewrite "^/sitemap-([a-zA-Z0-9]+)\.html$" /sitemap.php?type=$1 last;
rewrite "^/data/([a-zA-Z0-9]+)\.html$" /data/$1.html last;
rewrite "^/template/([a-zA-Z0-9]+)\.html$" /template/$1.html last;
rewrite "^/static/([a-zA-Z0-9]+)\.html$" /static/$1.html last;
rewrite "^/special/([a-zA-Z0-9]+)\.html$" /special/index.php?tid=$1 last;
rewrite "^/special/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)\.html$" /special/index.php?tid=$1&channel=$2 last;
rewrite "^/special/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([0-9]+)\.html$" /special/index.php?tid=$1&channel=$2&PageNo=$3 last;
}
}
设置步骤:
- 找到配置文件:使用 SSH 登录您的服务器,找到 Nginx 网站配置文件。
- 编辑文件:使用
vi或nano等编辑器打开文件。vi /usr/local/nginx/conf/vhosts/您的域名.conf
- 添加规则:在
server块内,找到location / { ... }部分,将上面的规则代码完整复制进去。 - 保存并退出:在
vi中按ESC,然后输入wq保存退出。 - 重启 Nginx:使配置生效。
nginx -s reload # 或者使用 systemctl systemctl reload nginx
Apache 伪静态规则
对于 Apache 环境,您需要将以下规则保存到 .htaccess 文件中,并确保该文件位于您网站的根目录(/public_html/ 或 /wwwroot/)。
规则代码:
<IfModule mod_rewrite.c> RewriteEngine On # 禁止访问 .htaccess 文件 RewriteRule \.(htaccess)$ / [F] # 织梦CMS主页面 RewriteRule ^index\.html$ /index.php [L] # 列表页 RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1 [L] RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 [L] # 文章页 RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?arcID=$1&pageno=$2 [L] # 分类页(URL美化) RewriteRule ^category/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([0-9]+)\.html$ /plus/list.php?tid=$3 [L] RewriteRule ^category/([a-zA-Z0-9]+)/([0-9]+)\.html$ /plus/list.php?tid=$2 [L] RewriteRule ^category/([a-zA-Z0-9]+)\.html$ /plus/list.php?tid=$1 [L] # 文章页(URL美化) RewriteRule ^archives/([a-zA-Z0-9]+)/([0-9]+)\.html$ /plus/view.php?arcID=$2 [L] RewriteRule ^archives/([0-9]+)\.html$ /plus/view.php?arcID=$1 [L] # 标签页 RewriteRule ^tags\.html$ /tags.php [L] RewriteRule ^tags/([a-zA-Z0-9]+)\.html$ /tags.php?/$1 [L] RewriteRule ^tag/([a-zA-Z0-9]+)\.html$ /tags.php?/$1 [L] # 搜索页 RewriteRule ^search\.html$ /search.php [L] RewriteRule ^search/([a-zA-Z0-9]+)\.html$ /search.php?keyword=$1 [L] # 其他页面 RewriteRule ^feedback\.html$ /plus/feedback.php [L] RewriteRule ^question-([0-9]+)\.html$ /plus/question.php?itemid=$1 [L] RewriteRule ^sitemap\.html$ /sitemap.php [L] RewriteRule ^sitemap-([a-zA-Z0-9]+)\.html$ /sitemap.php?type=$1 [L] # 静态资源目录 RewriteRule ^data/([a-zA-Z0-9]+)\.html$ /data/$1.html [L] RewriteRule ^template/([a-zA-Z0-9]+)\.html$ /template/$1.html [L] RewriteRule ^static/([a-zA-Z0-9]+)\.html$ /static/$1.html [L] # 专题页 RewriteRule ^special/([a-zA-Z0-9]+)\.html$ /special/index.php?tid=$1 [L] RewriteRule ^special/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)\.html$ /special/index.php?tid=$1&channel=$2 [L] RewriteRule ^special/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([0-9]+)\.html$ /special/index.php?tid=$1&channel=$2&PageNo=$3 [L] </IfModule>
设置步骤:
- 创建或编辑
.htaccess文件:在网站根目录下创建一个名为.htaccess的文件。 - 粘贴规则:将上面的规则代码完整复制到
.htaccess文件中。 - 保存文件。
- 检查 Apache 模块:确保 Apache 的
mod_rewrite模块已启用,您可以通过在httpd.conf文件中检查是否存在LoadModule rewrite_module modules/mod_rewrite.so这一行(没有被注释掉)来确认,如果需要,请取消注释并重启 Apache。systemctl restart apache2 # 或者 service httpd restart
织梦后台设置(非常重要!)
仅仅添加伪静态规则是不够的,您还必须在织梦后台开启并配置伪静态功能。
-
登录织梦后台:使用您的管理员账号登录。
-
进入“系统” -> “核心设置”:
- 找到 “是否使用伪静态” 选项,将其设置为 “是”。
- (可选但推荐) 找到 “文件命名规则”,您可以将其设置为类似
{typedir}/{aid}.html或{typedir}/{Y}/{M}/{D}/{aid}.html的格式,这样生成的链接会更美观、更利于SEO。
-
进入“栏目管理”:
- 编辑每一个栏目,在“高级选项”中,确保 “列表命名规则” 和 文章命名规则 已经设置为您想要的格式(
list-{tid}.html和{typedir}/{aid}.html)。
- 编辑每一个栏目,在“高级选项”中,确保 “列表命名规则” 和 文章命名规则 已经设置为您想要的格式(
-
进入“系统” -> “SQL命令行工具”:
- 在输入框中执行以下 SQL 语句,以确保数据库中的文章和栏目链接格式与伪静态规则匹配。
-- 更新文章链接为静态格式 UPDATE dede_archives SET redirecturl='';
-- 更新栏目链接为静态格式 UPDATE dede_arctype SET typedir='';
> **注意**:`dede_` 是织梦默认的表前缀,如果您的网站修改了表前缀,请相应更改。 - 在输入框中执行以下 SQL 语句,以确保数据库中的文章和栏目链接格式与伪静态规则匹配。
-
更新网站缓存和HTML:
- 在后台顶部点击 “更新缓存”。
- 进入 “生成” 菜单,依次点击 “更新主页HTML”、“更新栏目HTML” 和 “更新文档HTML”,这一步会根据您设置的规则重新生成所有静态页面。
常见问题与注意事项
-
规则不生效:
- 检查文件位置:确保
.htaccess文件在网站根目录,且 Nginx 配置文件正确。 - 检查权限:确保
.htaccess文件和 Nginx 配置文件的权限正确(.htaccess通常为 644)。 - 检查模块:Apache 确保开启了
mod_rewrite;Nginx 确保编译时包含了rewrite模块(通常默认包含)。 - 清除缓存:浏览器缓存、CDN缓存、服务器缓存(如 OPcache)都可能影响效果,尝试清除后重试。
- 检查文件位置:确保
-
404错误:
这通常意味着规则与实际的URL不匹配,或者后台没有正确生成静态文件,请仔细核对规则,并确保后台的“是否使用伪静态”已开启。
-
服务器环境:
上述规则是针对标准环境的,如果您的服务器是面板(如宝塔、Plesk、cPanel)管理的,请通过面板的“伪静态”或“URL重写”功能来添加规则,而不是手动编辑配置文件,这样更安全方便。
-
URL美化:
- 本规则中包含了
/category/和/archives/等美化路径,如果您不需要,可以删除相关的rewrite规则,只保留核心的list-xxx.html和view-xxx.html规则即可。
- 本规则中包含了
通过以上步骤,您的织梦5.7网站应该就能成功配置并使用伪静态了。
