我有一个有趣的RewriteRule,我不确定是否正则表达式。
简而言之,我想检查第二个/之后的URL - 基于内容,可能是前进。
总结为这两条规则:
以下是示例:
http://www.mysite.org/section/subsection/2011(好的,什么都不做)
http://www.mysite.org/section/subsection/2011-11(好的,什么都不做)
http://www.mysite.org/section/subsection/2011-11-09(不行,重定向)
http://www.mysite.org/section/subsection/2011-11-W1(不行,重定向)
请帮我改写重写规则并重写Cond
答案 0 :(得分:1)
我将以下正则表达式基于您的示例,这些示例似乎分析了最后一个'/'而不是第二个之后的所有内容。
/[^A-Za-z]{1,7}$
简单地说,这个正则表达式匹配一组跟随'/'并包含1-7个非字母字符的字符。为了使它只匹配最后一个'/',我附加一个'$',它匹配一行的结尾。
此外,由于您正在处理URL,您可能想要添加“/?”在'$'之前,如果最后有一个悬空'/'。
/[^A-Za-z]{1,7}/?$
我希望这能回答你的问题。
答案 1 :(得分:0)
正如Lane Aasen指出的那样,您的示例和规则不匹配。我将您的示例用于表示规则应适用于第3个路径段,并建议以下内容。您没有说明重定向目标是否不同,具体取决于哪个规则匹配。我认为它与众不同。
RewriteEngine on
# redirect if any letter is contained in 3rd part of path
RewriteRule ^([^/]+/){2}.*[a-zA-Z] http://www.bbc.co.uk [R=permanent,L]
# redirect if there are more than 7 characters in 3rd part of the path
RewriteRule ^([^/]+/){2}.{7,} http://www.ibm.com [R=permanent,L]