使用正则表达式的 htaccess 重写条件

htaccess rewrite condition that uses regex

我是正则表达式的菜鸟。我想要完成的是:

https://www.example.com/shop/product-floating-front-rotor-kit/

应该重定向到

https://www.example.com/shop/product-matching-front-rotor/

product应该是产品的名称,我必须为多个产品这样做。

编辑:这就是我目前所拥有的,我什至接近了吗?

RewriteEngine On

RewriteRule ^/shop/([a-z]+)-floating-front-rotor-kit/ ^/shop/-matching-front-rotor/
RewriteRule ^/shop/([a-z]+)-floating-front-rotor-kit/ ^/shop/-matching-front-rotor/

这很接近,除了...

  • .htaccess中,RewriteRule模式(第一个参数)匹配的URL-path不以a开头斜杠。

  • 替换 字符串有一个错误的 ^ 前缀。这应该是一个“普通”字符串,而不是正则表达式。

  • [a-z] 与您所说的可能出现在产品名称中的 hyphens/dashes 不匹配。

  • 您没有在 RewriteRule 模式 的末尾包含 end-of-string 锚点 ($),所以任何尾随字符串都会成功并被丢弃。 (是这个意思吗?)

  • 这是一个内部“重写”,而不是所说的“重定向”。您需要包含 R 标志。 (内部重写在这里不太可能起作用,因为目标 URL 需要进一步重写。)

改为尝试以下操作。这应该放在 .htaccess 文件的顶部,紧跟在 RewriteEngine 指令之后。

RewriteRule ^shop/([a-z-]+)-floating-front-rotor-kit/$ /shop/-matching-front-rotor/ [R=302,L]

这是 302(临时)重定向。