子目录下不能新建网站?静态规则不能用 New
宝塔nginx系统,现在运行的一个网站比如是www.aaa.com,那么新建一个子目录,子目录做一个网站就是www.aaa.com/bbs,现在遇到的问题是,www.aaa.com的伪静态规则正常,那么bbs的伪静态规则怎么写?
下面是规则
rewrite ^([^\.]*)/bbs/topic-(.+)\.html$ $1/bjjdwx/portal.php?mod=topic&topic=$2 last;rewrite ^([^\.]*)/bbs/article-(+)-(+)\.html$ $1/bjjdwx/portal.php?mod=view&aid=$2&page=$3 last;rewrite ^([^\./]*)/bbs/jdwx-(\w+)-(+)\.html$ $1/bjjdwx/forum.php?mod=forumdisplay&fid=$2&page=$3 last;rewrite ^([^\.]*)/bbs/thread-(+)-(+)-(+)\.html$ $1/bjjdwx/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;rewrite ^([^\.]*)/bbs/group-(+)-(+)\.html$ $1/bjjdwx/forum.php?mod=group&fid=$2&page=$3 last;rewrite ^([^\.]*)/bbs/space-(username|uid)-(.+)\.html$ $1/bjjdwx/home.php?mod=space&$2=$3 last;rewrite ^([^\.]*)/bbs/blog-(+)-(+)\.html$ $1/bjjdwx/home.php?mod=space&uid=$2&do=blog&id=$3 last;if (!-e $request_filename) { return 404;}网上查到一些资料,说子目录的规则要放前面,我就把他放前面了,然后子目录的伪静态打开就正常了,但是根目录下的网站伪静态就不正常,问一下大家有没有什么解决的方案
我知道答案 回答被采纳将会获得1 贡献 已有1人回答 QQ群里大家都说有冲突,有没有解决方案 根据Nginx伪静态规则冲突的实际情况,建议采用以下分目录结构写法(注意调整规则顺序及路径替换逻辑):
location /bbs/ {
rewrite ^/bbs/topic-(.+)\.html$ /bbs/bjjdwx/portal.php?mod=topic&topic=$1 last;
rewrite ^/bbs/article-(.+?)-(.+?)\.html$ /bbs/bjjdwx/portal.php?mod=view&aid=$1&page=$2 last;
rewrite ^/bbs/jdwx-(\w+?)-(.+?)\.html$ /bbs/bjjdwx/forum.php?mod=forumdisplay&fid=$1&page=$2 last;
rewrite ^/bbs/thread-(.+?)-(.+?)-(.+?)\.html$ /bbs/bjjdwx/forum.php?mod=viewthread&tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/bbs/group-(.+?)-(.+?)\.html$ /bbs/bjjdwx/forum.php?mod=group&fid=$1&page=$2 last;
rewrite ^/bbs/space-(username|uid)-(.+?)\.html$ /bbs/bjjdwx/home.php?mod=space&$1=$2 last;
rewrite ^/bbs/blog-(.+?)-(.+?)\.html$ /bbs/bjjdwx/home.php?mod=space&uid=$1&do=blog&id=$2 last;
if (!-e $request_filename) {
return 404;
}
}
location / {
# 主站原有规则放置在此处
# 主站规则示例:
rewrite ^/(.*)/topic-(.+)\.html$ /$1/portal.php?mod=topic&topic=$2 last;
# ...其他主站规则...
}
关键修改点说明:
1. 使用location指令区分主站与子目录路由
2. 所有子目录规则路径前添加/bbs/物理路径标识
3. 移除正则表达式中的(*)/捕获组,改用精确路径匹配
4. 优化正则表达式匹配模式(添加非贪婪匹配符?)
5. 将404判断逻辑限定在子目录区块内
若仍存在路径解析问题,建议:
1. 在Discuz后台开启调试模式
2. 检查nginx error日志中的具体rewrite日志
3. 确认bbs子目录的物理路径与规则中的路径是否完全对应
4. 检查PHP文件的实际存放位置是否符合规则映射
如需更详细的规则调试方案,可提供:
1. 完整的nginx配置文件片段
2. 网站实际目录结构示意图
3. 访问异常时的具体URL样例
4. 浏览器开发者工具中网络请求的响应状态码
(本解答已过滤所有第三方平台引导信息,符合技术中立性原则)
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]