我对重写规则遇到的问题有疑问,我想制作一个重写规则,在连字符后得到所有内容,但它只是得到了最后一个字?
我的链接:
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之间得到所有内容?
答案 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]