2012-10-09 237 views
0

我想使用一些别名为我的apache,使用mod_rewrite,因为别名不起作用从.htaccessApache别名/重写重定向循环

比如我想为article/?id=1别名是about/

当然,一个简单的事情做的:

RewriteRule ^about\/$ "article\/\?id=1" [L] 

然而,在同一时间,我不希望任何人访问article/?id=1了,并将301重定向到about/以保留页面值和果汁。 (因为否则搜索引擎会认为它是两个不同的页面,并会根据自己的判断来判断它。)

所以换句话说,我希望此url只能由其别名提供,并且如果有人请求实际页面 - 然后301重定向到别名。

这就是问题开始的地方,因为我写的另一个重写规则,我结束了错误310(重定向环路):

RewriteRule ^article\/\?id=1$ "about\/" [L,R=301] 

有什么办法来解决这个问题......?

回答

0

您需要匹配实际的请求,而不是针对URI,因为其他规则将简单地在内部重写并触发重定向,导致循环。此外,您无法匹配RewriteRule中的查询字符串。

RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /article/\?id=1&?([^\ ]*) 
RewriteRule^/about/?%2 [L,R=301]