You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

htaccess实现详情页URL末尾带/或字符时跳转404.php的方法

解决方案

直接将你的.htaccess配置替换为以下内容,即可实现详情页URL末尾带斜杠或额外字符时跳转404.php的需求:

RewriteEngine on

# 修正主机名重定向规则(原规则HTTP_HOST写法错误,HTTP_HOST仅包含主机名不含路径)
RewriteCond %{HTTP_HOST} ^localhost$ [NC]
RewriteRule ^(.*)$ http://localhost/$1 [L,R=301,NC]

# 拦截详情页末尾带斜杠的请求,直接返回404
RewriteRule ^([^/_.]+)/$ - [R=404,L]

# 拦截详情页后带额外路径的请求,直接返回404
RewriteRule ^([^/_.]+)/.+$ - [R=404,L]

# 自动添加.php后缀(仅当对应文件存在时)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

# 详情页URL重写规则
RewriteRule ^([^/_.]+)$ detay.php?url=$1 [L,QSA]

# 页面URL重写规则
RewriteRule ^sayfa/([^/_.]+)$ index.php?page=$1 [L,QSA]

# 指定404错误跳转页面
ErrorDocument 404 /404.php

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST On
</IfModule>

关键修改说明:

  • 修正主机名规则:原规则中%{HTTP_HOST} ^localhost/写法错误,HTTP_HOST仅存储主机名(如localhost),不包含路径,调整后避免无效匹配。
  • 新增拦截规则:
    1. RewriteRule ^([^/_.]+)/$ - [R=404,L]:匹配末尾带斜杠的详情页URL(如/test/),直接返回404状态码并跳转至404.php。
    2. RewriteRule ^([^/_.]+)/.+$ - [R=404,L]:匹配详情页后附带额外路径/字符的URL(如/test/abc),直接返回404。
  • 调整404跳转目标:将原指向根目录的配置改为指向/404.php,确保错误请求正确跳转至指定页面。
  • 规则顺序优化:拦截规则必须放在详情页重写规则之前,确保不符合要求的请求先被拦截,不会进入正常详情页逻辑。

若你的404.php不在网站根目录,需调整ErrorDocument后的路径为实际相对路径。

内容的提问来源于stack exchange,提问作者ilkertncr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:52:37