【问题标题】:.htaccess rewrite request url starting with question mark.htaccess 重写请求 url 以问号开头
【发布时间】:2013-06-08 04:49:25
【问题描述】:

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

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

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

你会怎么做。我已经尝试过:

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

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

上述解决方案均无效。

【问题讨论】:

    标签: php .htaccess joomla


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,伙计。非常感谢。这似乎解决了我的问题! - 我一直在努力与谷歌索引我的网页,因为我在我的网页被编入索引后立即对 url 结构进行了一些更改,我不知道我的网页已经编入索引,所以我没有设置 301 重定向。所以现在我即将重定向所有旧页面
    【解决方案2】:

    你做错了两件事:

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

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

    更多关于 Apache 重写的信息可以在here找到。

    【讨论】:

    • 还是不行。我纠正了你的 2 个错误,但我仍然无法让它工作 - 现在看起来像:RewriteCond %{REQUEST_URI} ^/\?itemid=134$RewriteRule ^.*$ madplanuge.dk/madplan/lav-madplan? [R=301,L]
    • madplanuge.dk/madplan/lav-madplan? 应该是http://madplanuge.dk/madplan/lav-madplan? 因为它需要以http://开头
    猜你喜欢
    • 2019-05-11
    • 2013-12-24
    • 2013-09-03
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多