0

我想为我的 apache 使用一些别名,使用 mod_rewrite,因为别名不适用于.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]

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

4

1 回答 1

0

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

RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /article/\?id=1&?([^\ ]*)
RewriteRule ^ /about/?%2 [L,R=301]
于 2012-10-10T04:55:33.820 回答