我正在尝试为301s创建一个正则表达式,以帮助我识别网址:site.com/abc/
并重定向到site.com/xyz/
。我已经尝试使用正则表达式^abc/?
并且它工作正常但问题是甚至像site.com/123/sdas/abc/213
这样的网址被抓住了。如何确保只有/abc
与完整的字符串网址匹配?
答案 0 :(得分:20)
使用行结束$
:
^abc/$
这可确保匹配确切的字符串abc/
。
答案 1 :(得分:2)
$匹配字符串的结尾:
^abc/?$
答案 2 :(得分:1)
const regex = /^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$/;
const str = `https://abc.xyz/upload/string/something/hds`;
let m;
if ((m = regex.exec(str)) !== null) {
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
在控制台中:
匹配1 完全匹配0-43
https://abc.xyz/upload/string/something/hds
- 小组1.不适用https:/
- 小组2.不适用https
- 小组3.不适用abc.xyz
- 小组4.不适用/upload/string/something/
- 小组5.不适用/something
- 小组6.不适用hds
答案 3 :(得分:0)
像这样写下你的规则:
RewriteRule ^abc/?$ /xyz [L,NC]