使用正则表达式的 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(临时)重定向。
我是正则表达式的菜鸟。我想要完成的是:
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(临时)重定向。