HTAccess用hypen替换字符串

时间:2017-12-14 08:27:29

标签: .htaccess mod-rewrite url-rewriting

我对重写规则遇到的问题有疑问,我想制作一个重写规则,在连字符后得到所有内容,但它只是得到了最后一个字?

我的链接:

http://www.website.com/home/24-nieuws/143-kip-kip-kip-donington.html

我有以下规则:

RewriteRule ^home/24-nieuws/(.*)-(.*).html$  http://www.website.com/$2 [R=301,L]

这个规则给了我一个奇怪的输出,我发现它很奇怪,但它可能因为连字符被用作正则表达式字符?

输出:

http://www.website.com/donington

它跳过了所有文字,只是得到了最后一个字?有没有人知道我必须做什么才能让它在第一个连字符和.html之间得到所有内容?

1 个答案:

答案 0 :(得分:1)

您可以使用此规则:

RewriteRule ^home/24-nieuws/[^-]*-(.+)\.html$  http://www.website.com/$1 [R=301,L,NC]

[^-]*是与0个或更多非连字符匹配的否定字符类。它将在第一个连字符之前停止匹配。

也可以使用非贪婪量词来使其起作用:

RewriteRule ^home/24-nieuws/.*?-(.+)\.html$  http://www.website.com/$1 [R=301,L,NC]

RegEx Demo