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

使用指定.htaccess规则后生成的URL返回404,如何修复?

修复.htaccess重写后的404错误问题

你当前的.htaccess只实现了旧URL到友好URL的301重定向,但缺少关键的反向解析规则——服务器收到/5paisa-vs-abhipra-capital这类友好URL请求时,会默认寻找对应名称的文件或目录,找不到就返回404。

修复方案

添加一条反向重写规则,把友好URL拆解成后端index.php需要的name1和name2参数,完整代码如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # 核心修复:将友好URL解析为index.php可识别的参数
    RewriteRule ^([^-]+)-vs-([^/]+)$ /index.php?name1=$1&name2=$2 [L]

    # 旧URL到友好URL的301重定向(保留原有逻辑)
    RewriteCond %{QUERY_STRING} ^name1=([^&]+)&name2=([^&]+)$
    RewriteRule ^$ /%1-vs-%2? [R=301,L]

    # 其他非文件/目录请求转发到index.php(保留原有逻辑)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

关键规则说明

  • 新增的RewriteRule ^([^-]+)-vs-([^/]+)$ /index.php?name1=$1&name2=$2 [L]:
    • 正则^([^-]+)-vs-([^/]+)$精准匹配xxx-vs-xxx格式的URL路径,把xxx分别提取为name1和name2参数
    • [L]标记表示匹配后不再执行后续规则,直接转发给index.php处理

注意事项

  • 如果你的name1或name2本身包含-字符,需要调整正则为^([^/]+)-vs-([^/]+)$,但要确保-vs-是唯一的分隔符
  • 测试阶段可将R=301改为R=302(临时重定向),确认规则生效后再换回永久重定向
  • 确保服务器已开启mod_rewrite模块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:43:21