admin 发表于 2023-1-6 22:50:17

discuz目录化伪静态中遇到的特殊格式URL静态化路径中目录后面不带斜杠的自动跳转

discuz目录化伪静态中遇到的特殊格式URL静态化路径中目录后面不带斜杠的自动跳转:


当使用特殊格式的路径时,以斜杠/结尾的路径,如果用户直接输入不带/结尾的url时会出现404错误页面,具体原因这里不细说,只提供相关的解决方法。在通过伪静态来做不带/结尾的路径的301跳转,但因301跳转的设置方法与伪静态组件的版本相关,所以无法自动生成对应的跳转规则,需要手动添加301跳转规则。一、IIS Web Server(独立主机用户):ISAPI_Rewrite 1.x:RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/ [R,I]
ISAPI_Rewrite 2.x:RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/ [I,RP]ISAPI_Rewrite 3.x:RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/ [NC,R=301]二、Apache Web Server(独立主机用户)RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/ 三、IIS7 Web Server(独立主机用户)<rule name="AddTrailingSlashRule1" stopProcessing="true">
<match url="^(.*/)*(library|develop|database|card|wall|license|plugin)$" />
<action type="Redirect" url="{R:1}{R:2}/" />
</rule>四、nginxrewrite ^([^\.]*)/(library|develop|database|card|wall|license|plugin)$ $2/ permanent;说明:1.暂只研究上面几种,其他格式暂未研究。2.library|develop|database|card|wall|license|plugin换成你自己获取规则中的表单名


teliy 发表于 2023-1-30 15:42:01

目录化伪静态优化

Discuz智能体 发表于 2025-3-18 04:17:46

在Discuz的目录化伪静态设置中,遇到特殊格式的URL静态化路径时,如果目录后面不带斜杠,可能会导致404错误。为了避免这种情况,可以通过设置301跳转规则来实现自动跳转。以下是针对不同Web服务器的具体设置方法:

### 1. IIS Web Server(独立主机用户)

#### ISAPI_Rewrite 1.x
RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/

#### ISAPI_Rewrite 2.x
RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/

#### ISAPI_Rewrite 3.x
RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/

### 2. Apache Web Server(独立主机用户)

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/

### 3. IIS7 Web Server(独立主机用户)

在IIS7中,可以通过URL重写模块来实现。具体步骤如下:

1. 打开IIS管理器,选择你的网站。
2. 在右侧的“功能视图”中,找到“URL重写”并双击打开。
3. 点击“添加规则”,选择“空白规则”。
4. 在“匹配URL”部分,设置以下内容:
   - 请求的URL:与模式匹配
   - 使用:正则表达式
   - 模式:`^(.*)/(library|develop|database|card|wall|license|plugin)$`
5. 在“条件”部分,添加一个条件:
   - 条件输入:`{REQUEST_URI}`
   - 检查输入字符串是否:不匹配模式
   - 模式:`(.*)/$`
6. 在“操作”部分,设置以下内容:
   - 操作类型:重定向
   - 重定向URL:`{R:1}/{R:2}/`
   - 重定向类型:永久(301)

### 4. Nginx

rewrite ^(.*)/(library|develop|database|card|wall|license|plugin)$ $1/$2/ permanent;

### 说明:
1. 上述规则中的`library|develop|database|card|wall|license|plugin`需要替换为你实际使用的目录名称。
2. 这些规则的作用是当用户访问不带斜杠的URL时,自动301跳转到带斜杠的URL,从而避免404错误。

### 其他注意事项:
- 如果你使用的是其他Web服务器或伪静态组件,可能需要根据具体情况进行调整。
- 在修改伪静态规则后,建议清除浏览器缓存或使用隐身模式进行测试,以确保规则生效。

如果你在设置过程中遇到问题,可以随时在DZ插件网(https://www.dz-x.net/)寻求帮助,社区中有很多经验丰富的开发者可以提供支持。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: discuz目录化伪静态中遇到的特殊格式URL静态化路径中目录后面不带斜杠的自动跳转