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

.htaccess配置:将动态Product.php URL重写为根目录静态产品路径

解决URL重写404问题的完整方案

我来帮你搞定这个URL重写的麻烦!你现在遇到404错误,核心问题是现有规则的正则表达式没覆盖产品名称里的连字符(-),还有几个关键配置细节没到位。咱们一步步来调整:

1. 补全基础配置前提

首先,你的.htaccess必须放在网站根目录(和Product.php同目录),而且要先开启Rewrite引擎,这是重写规则生效的基础。

2. 修正正则表达式并合并规则

你原来的规则只匹配字母数字,但产品名里有-,得把这个字符加入匹配范围。另外,我们可以把两条规则合并成一条,用可选的斜杠/?同时处理带/和不带/的URL,避免重复代码。

3. 增加反向重定向(SEO友好必备)

为了避免重复内容影响SEO,当用户直接访问旧的动态URL时,要自动重定向到新的美观URL,这部分也得加上。

完整的.htaccess配置

# 开启重写引擎
RewriteEngine On

# 关闭Apache的MultiViews,防止干扰重写规则
Options -MultiViews

# 把旧动态URL重定向到新静态URL(永久重定向,利于SEO)
RewriteCond %{THE_REQUEST} ^GET\ /Product\.php\?product=([^\s&]+)
RewriteRule ^ /%1/? [R=301,L]

# 把新静态URL内部转发到实际的Product.php文件
RewriteRule ^([a-zA-Z0-9-]+)/?$ Product.php?product=$1 [L]

关键细节解释

  • Options -MultiViews:关闭Apache的内容协商功能,防止它自动匹配文件导致重写规则失效。
  • 第一条规则是外部重定向:用户访问Product.php?product=xxx时,浏览器会跳转到/xxx/,301状态码表示永久重定向,对搜索引擎友好。
  • 第二条规则是内部重写:用户访问/xxx/或/xxx时,服务器内部悄悄转发到Product.php?product=xxx,用户看不到实际的PHP文件路径。

测试要点

  • 确认.htaccess在网站根目录,权限设置为644(常规可读写权限)。
  • 测试访问www.domain.co.uk/solid-oak-dining-table/和www.domain.co.uk/solid-oak-dining-table,应该都能正常打开产品页面。
  • 测试旧URLwww.domain.co.uk/Product.php?product=solid-oak-dining-table,应该自动跳转到新URL。

这样调整后,就能完美实现你想要的产品名称位于根目录的URL形式了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:23:45