我想使用mod_rewrite为我的apache使用一些别名,因为别名不适用于.htaccess
。
例如,我希望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 :(得分:0)
您需要匹配实际请求而不是URI,因为另一个规则只是在内部重写它并触发重定向,从而导致循环。此外,您无法与RewriteRule
中的查询字符串进行匹配。
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /article/\?id=1&?([^\ ]*)
RewriteRule ^ /about/?%2 [L,R=301]