You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为特定URL配置始终添加尾部斜杠的Rewrite规则?

修改后的Rewrite规则配置

以下是调整后的完整Rewrite规则,确保example.com/brands/brand-id这类URL会自动301重定向到带尾部斜杠的版本,同时保证两种访问方式都能正常路由:

# 1. 将不带斜杠的/brands重定向到/brands/
RewriteRule ^brands$ brands/ [R=301,L]

# 2. 新增:将不带斜杠的/brands/[数字ID]重定向到带斜杠的版本
RewriteRule ^brands/([0-9]+)$ brands/$1/ [R=301,L]

# 3. 处理/brands/的内部路由到brands.php
RewriteRule ^brands/$ /brands.php

# 4. 处理带名称和ID的品牌URL(已带斜杠)
RewriteRule ^brands/([A-ZÆØÅæøåa-z0-9-]+)-([0-9]+)/$ index.php?manufacturers_name=$1&manufacturers_id=$2 [L,QSA]

# 5. 新增:处理带斜杠的纯数字品牌ID的内部路由
RewriteRule ^brands/([0-9]+)/$ index.php?manufacturers_id=$1 [L,QSA]

关键修改点说明

  • 新增第2条规则:专门匹配/brands/[数字ID]这种不带尾部斜杠的URL,通过R=301永久重定向到带斜杠的版本。这一步是实现URL规范化的核心,确保用户无论输入哪种形式,最终浏览器地址栏都会显示带斜杠的URL,同时对SEO更友好。

  • 替换原纯数字ID规则:原规则处理不带斜杠的纯数字ID,现在改成处理带斜杠的版本(第5条规则),配合第2条的重定向,确保所有纯数字ID的访问都会先规范到带斜杠的URL,再进行内部路由。

  • 保留QSA标记:在第4、5条规则中保留QSA(Query String Append)标记,这样如果用户访问时带有额外的查询参数(比如/brands/123?foo=bar),参数会被自动追加到最终的内部路由中,不会丢失。

  • 规则顺序优先级:重定向规则(第1、2条)必须放在内部路由规则前面,这样Apache会先完成URL规范化,再处理实际的页面路由,避免出现匹配混乱的情况。

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

火山引擎 最新活动