我正在尝试执行以下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
任何人都可以提供任何指示吗?
答案 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
(永久重定向)。