Apache重定向模糊的uri

时间:2011-10-06 17:24:46

标签: apache redirect .htaccess

我正在使用Apache .htaccess进行重定向:

RedirectMatch "^/mysubpage/?" http://domain.com/page [R=301,L]

链接:http://domain.com/mysubpage

但是当页面加载时,链接会更改为:http://domain.com/page/ ?uri = / mysubpage /

为什么会附加“?uri”查询字符串?

2 个答案:

答案 0 :(得分:1)

我认为这是因为?在你的重定向匹配正则表达式,但我不确定你想要做什么。如果你想捕获最后一个斜杠后面的glob(你的uri = substring中出现的是什么)并将其用作不同URI的一部分,那么你想要的是这样的

RedirectMatch "^/mysubpage/(.*)" http://domain.com/page/$1 [R=301,L]

这将向http://domain.com/mysubpage/alpha.php发送任何请求并将其永久重定向到http://domain.com/page/alpha.php。另一方面,如果您不关心mysubpage请求中的斜杠之后的内容,那么您可以执行以下操作:

RedirectMatch "^/mysubpage/.*" http://domain.com/page [R=301,L]

这将删除请求的其余部分并重定向到http://domain.com/page

HTH

答案 1 :(得分:0)

您的http://domain.com/subpage很可能已经是重写的网址了吗?!

试试这个:

RedirectMatch "^/mysubpage/(.*)" http://domain.com/page/$1? [R=301,L]

重定向目标末尾的Questionmark是为了防止将旧的查询字符串附加到它(这是默认行为)。