奇怪:/?URL中的名字通向博客

时间:2014-06-17 作者:psteinweber

这是一种奇怪的行为,我想不出一个好的解释:

If you append /?name to a WordPress URL, it is loading the blog page.

我创建了一个自定义的Aweber“thank you”页面,应该在http://mydomain.com/thank-you. 然而,Aweber通过查询字符串向URL附加了大量信息,因此URL最终类似于:

http://mydomain.com/thank-you/?email=my%40email%2ecom&from=my%40email%2ecom&listname=name&meta_adtracking=location&meta_message=1&meta_required=email&name=&submit=Submit

这不会打开感谢页面,而是打开博客。一旦我移除name 部分,它将加载正确的页面。

反向工程:如果/?name 附加到URL。请参见:

滚石。com(我不允许发布2个链接)

  • rollingstones.com/?name/band/ 停留时间/band/ 即使是去/band/?name. 在我的示例中,它也会影响页面)

    有什么想法是这种行为的根源,以及如何克服它?谢谢

  • 2 个回复
    最合适的回答,由SO网友:Tom J Nowell 整理而成

    这些是保留关键字

    当您访问WordPress博客时,您有:

    blogindexpage/?queryvariables=queryvalues
    
    因此,对于搜索请求:

    example.com/?s=searchterm
    
    对于ID为12的帖子/页面:

    example.com/?p=12
    
    etc等

    Pretty permalinks通过使用正则表达式将好看的URL映射到它们的等效URL来隐藏所有这些。但这并不能阻止某人继续这样做,例如:。

    tomjn.com/?s=query_posts
    
    仍然会在我的网站上搜索“query\\u posts”,即使我添加了很多永久链接。

    WP\\U查询文档中列出的所有查询变量也是如此。这些变量被添加到查询WordPress运行中,选择的模板和加载的帖子取决于这些查询变量

    那么我该如何解决我的问题呢

    不要使用保留关键字和查询变量来命名post变量。或者更好的是,使用POST而不是GET来提交表单,尤其是在涉及电子邮件和提交的情况下(想象一下,如果我访问了该页面并刷新了20次,或者在我的选项卡中打开了该页面并在几天内关闭并重新打开了我的浏览器?)

    既然您已经声明不能更改“name”,我建议您在htaccess中添加类似的内容:

    RewriteCond %{QUERY_STRING} (.+?)&name=(.+)
    RewriteRule ^thank-you/ /thank-you/?%1&fullname=%2 [R,NC,L]
    
    As described here, 这将把“name”重写为“fullname”GET参数。

    SO网友:psteinweber

    在我的研究中,受TomJ Nowell的答案启发,我发现wp-config.php解决问题

    unset($_GET[\'name\']);
    
    已找到here

    结束

    相关推荐

    Updating URLs in many posts

    我将我的WP内容复制到另一台服务器上的新安装中,因此现在我上载的PDF文档具有旧的URL。有没有一种简单的方法可以在我所有的帖子中一次解决这个问题,也许可以使用SQL或一些插件?