何我为包含省略号的目录编写.htaccess重定向

时间:2014-01-22 00:07:21

标签: .htaccess mod-rewrite redirect

我在Google中索引了一个无效目录,并且由于一些动态相对链接,我现在有2500个“缺失”页面已编入索引。我正在尝试使用.htaccess 301重定向来纠正问题,但我似乎无法让它工作。我需要将www.domain.com/shop/pc/.../pc/filename.asp重定向到www.domain.com/shop/pc/filename.asp

我写的不想工作的规则是RewriteRule ^shop/pc/\.\.\./pc/(.*)$ /shop/pc/$1 [R=301,L]

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

mod_rewite使用PCRE,所以对于这些Unicode字符(我也包括了两个点头,因为我认为它更可能潜入URL而不是省略号):

# U+2026 … \xe2\x80\xa6 HORIZONTAL ELLIPSIS
RewriteRule ^shop/pc/\xe2\x80\xa6/pc/(.*)$ /shop/pc/$1 [R=301,L]

# U+2025 ‥ \xe2\x80\xa5 TWO DOT LEADER
RewriteRule ^shop/pc/\xe2\x80\xa5/pc/(.*)$ /shop/pc/$1 [R=301,L]

注意,如果浏览器以百分比形式转义省略号,则可能需要[B]标志(see flags)。