我需要有一个基于子域名“blog”匹配这样的URI的RegEx -
http://blog.foo.com/2010/06/25/city-tax-sale/
并像这样重定向(摆脱子域名和数字/日期) -
最后一位“城市税收销售”将是一个通配符。所以基本上任何以'blog.foo.com'开头的传入URI都会被重定向到'foo.com'+'在带有数字的三个子路径之后的上述URI的末尾。
我希望这是有道理的。只是尝试创建一个重定向而不是编写每个重定向。
答案 0 :(得分:3)
这将明确匹配您的日期格式,而不是任何数字和斜线序列:
RewriteCond %{HTTP_HOST} ^blog\.foo\.com$ [NC]
RewriteRule ^/\d{4}/\d{2}/\d{2}/(.*)$ http://foo.com/$1 [L,R=301]
正则表达式部分可以被破坏:
^ # start of non-domain url
/\d{4} # slash followed by 4 digits
/\d{2} # slash followed by 2 digits
/\d{2} # slash followed by 2 digits
/ # closing slash
(.*) # rest of the url, captured to group 1
$ # end of url
替换为1组中的$1
。
在选项部分:
L
代表“最后” - 告诉它不要费心查看其他规则
R=301
用于具有301标头的重定向,这意味着永久重定向(仅R将发送临时302标头)
RewriteCond位对HTTP_HOST
标题(由用户/客户端提供)执行不区分大小写(NC选项)检查,如果它启动blog.foo.com
则执行重写,否则不执行重写
答案 1 :(得分:2)
RewriteCond %{HTTP_HOST} ^blog.foo.com [NC]
RewriteRule ^(\d+/)+(.*)/?$ http://foo.com/$2 [L,R=301]
答案 2 :(得分:0)
你可以试试这个:
/http:\/\/blog\..*\.[a-zA-Z]{2,5}\/[0-9]{4}\/[0-9]{2}\/[0-9]{2}\/(.*)\//