.htaccess重写请求url以问号开头

时间:2013-06-12 06:52:42

标签: php .htaccess joomla

我有这个Joomla问题 - 谷歌似乎索引了我删除的菜单条目,但我忘了删除菜单中的条目所以现在谷歌已索引此网站:

http://www.madplanuge.dk/?Itemid=134

我想将它(.htaccess)重定向到此网址:http://www.madplanuge.dk/madplan/lav-madplan

你会怎么做?我已经尝试过以下:

  

RewriteRule ^ \?Itemid = 134 http://www.madplanuge.dk/madplan/lav-madplan? [R = 301,L]

     

RewriteCond%{REQUEST_URI} ^ \?Itemid = 134 $
  RewriteRule ^ \?Itemid = 134 $ http://www.madplanuge.dk/madplan/lav-madplan? [R = 301,L]

上述两种解决方案均无效。

2 个答案:

答案 0 :(得分:4)

您无法单独使用RewriteRule,因为Apache会忽略查询字符串。如果查询字符串包含我们正在寻找的ID,我正在进行重定向。

RewriteCond %{QUERY_STRING} Itemid=134 [NC]
RewriteRule ^.*$ http://%{HTTP_HOST}/madplan/lav-madplan? [R=301,L]

请记住,当您测试浏览器是否会缓存301重定向时,您需要清除缓存以查看更改。

答案 1 :(得分:1)

你做错了两件事:

  • %{REQUEST_URI}始终以斜杠开头,因此RewriteCond需要^/\?而不是^\?

  • 将RewriteRule中的^\?Itemid=134$更改为^.*$。 RewriteRule将整个URL作为第一个参数,而不仅仅是请求URI。

有关Apache重写的更多信息,请访问here