·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

如何设置Discuz! X3.5的伪静态 New

369 2
发表于 2024-4-6 20:09:14 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
下面是我的服务器配置

Discuz! X3.5 Release 20231221 UTF-8
Linux / PHP v7.4.33
nginx/1.25.4


下面是我在nginx配置文件中写的伪静态规则  伪静态规则是Discuz! X3.5生成的

server {
...........省略
   location /rewrite {
        rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^\.]*)/archiver/(fid|tid)-([0-9]+)\.html$ $1/archiver/index.php?action=$2&value=$3 last;
rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
if (!-e $request_filename) {
        return 404;
}
    }
}
配置完成后URL已经变了 但是是404
我知道答案 回答被采纳将会获得1 贡献 已有1人回答
我要说一句 收起回复

评论2

IT618发布Lv.8 发表于 2024-4-6 20:09:57 | 查看全部
这个是要把规则配置到服务器环境里去的
404说明你规则写错地方或写错文件了,没起效
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-17 07:27:23 | 查看全部
在配置Discuz! X3.5的伪静态时,你提供的Nginx配置规则有一些问题,导致URL重写后返回404错误。以下是一些可能的原因和解决方案:

### 1. 规则语法问题
你提供的规则中,`rewrite`语句的语法有误。正确的Nginx `rewrite`规则应该使用`^`和`$`来匹配URL的开头和结尾,并且`*`和`+`的使用也需要符合正则表达式的规则。

### 2. 规则顺序问题
Nginx的`rewrite`规则是按顺序执行的,因此规则的顺序非常重要。你应该将更具体的规则放在前面,避免被更通用的规则覆盖。

### 3. `if`语句问题
`if`语句在Nginx中可能会导致一些问题,尤其是在`location`块中使用时。建议尽量避免使用`if`语句,或者将其替换为更安全的配置。

### 4. 伪静态规则的正确性
确保你使用的伪静态规则是适用于Discuz! X3.5的。你可以参考Discuz!官方提供的伪静态规则。

### 修正后的Nginx配置
以下是一个修正后的Nginx伪静态配置示例:

  1. server {
  2.     # 其他配置省略...

  3.     location / {
  4.         try_files $uri $uri/ /index.php?$args;
  5.     }

  6.     location /rewrite {
  7.         rewrite ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1 last;
  8.         rewrite ^/article-([0-9]+)-([0-9]+)\.html$ /portal.php?mod=view&aid=$1&page=$2 last;
  9.         rewrite ^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2 last;
  10.         rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page%3D$3&page=$2 last;
  11.         rewrite ^/group-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=group&fid=$1&page=$2 last;
  12.         rewrite ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2 last;
  13.         rewrite ^/blog-([0-9]+)-([0-9]+)\.html$ /home.php?mod=space&uid=$1&do=blog&id=$2 last;
  14.         rewrite ^/archiver/(fid|tid)-([0-9]+)\.html$ /archiver/index.php?action=$1&value=$2 last;
  15.         rewrite ^/([^/]+)-([0-9]+)\.html$ /plugin.php?id=$1:$2 last;

  16.         if (!-e $request_filename) {
  17.             return 404;
  18.         }
  19.     }

  20.     # 其他配置省略...
  21. }
复制代码


### 5. 检查Nginx配置
在修改完Nginx配置文件后,记得使用以下命令检查配置文件的语法是否正确:

  1. nginx -t
复制代码


如果配置正确,重启Nginx服务以应用更改:

  1. systemctl restart nginx
复制代码


### 6. 检查Discuz!后台设置
确保在Discuz!后台的“全局”->“SEO设置”中启用了伪静态功能,并且选择了正确的伪静态规则。

### 7. 检查文件权限
确保Nginx对Discuz!的目录有正确的读取权限,尤其是`/data`和`/config`目录。

### 8. 日志排查
如果问题仍然存在,可以查看Nginx的错误日志(通常位于`/var/log/nginx/error.log`)以获取更多信息。

通过以上步骤,你应该能够解决Discuz! X3.5伪静态配置的问题。如果还有其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.212,GMT+8, 2025-6-14 17:40 , Processed in 0.221566 second(s), 79 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表