RedirectMatch Regex仅适用于某些浏览器/机器

时间:2013-07-02 13:41:16

标签: regex .htaccess redirect

我正在尝试执行以下301重定向。

/blog/ is not redirected.
/blog/xxxxx/ is redirected to /blog/
/blog/page/x is not redirected

我不是正则表达式的专家,在深入研究了一些stackoverflow帖子后,我想出了这个:

RedirectMatch 301 /blog/((?!page/.*)[0-9a-zA-Z\-]{1,})*/ http://www.xxxxxxx.com/blog/

虽然这可以在我的Mac上运行,但由于某些原因它在我的电脑上没有使用chrome(在/ blog / page上报告无限循环,与IE相同)。

我最初是以更简单的方式编写的,没有[0-9a-zA-Z\-]{1,}部分。包括这是我尝试修复chrome @ windows上的无限循环问题。

编辑:我还使用在线正则表达式工具对其进行了测试,它似乎运行良好: http://imgur.com/pSRCn5b

任何人都可以提供任何指示吗?

1 个答案:

答案 0 :(得分:1)

首先清除浏览器的缓存,然后在测试中使用R = 302。

最好使用mod_rewrite。

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(blog)/([^/]+)/?$ /$1 [L,R=302,NC]

验证一切正常后,将R=302替换为R=301。在测试mod_rewrite规则时,请避免使用R=301(永久重定向)。