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


.htaccess rewrite request url starting with question mark

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

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

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

你会怎么做。 我已经尝试了以下方法:

重写规则^''?项数 = 134 http://www.madplanuge.dk/madplan/lav-madplan? [R=301,L]

RewriteCond %{REQUEST_URI} ^''?项数=134$
重写规则^''?项数=134$ http://www.madplanuge.dk/madplan/lav-madplan? [R=301,L]

上述解决方案均无效。

你不能单独使用 RewriteRule 来做到这一点,因为 Apache 会忽略查询字符串。在这里,如果查询字符串包含我们要查找的 ID,我将进行重定向。

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

请记住,当您进行测试时,您的浏览器将缓存您的 301 重定向,因此您需要清除缓存才能看到任何更改。

你做错了两件事:

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

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

有关 Apache 重写的更多信息可以在这里找到。