【问题标题】:Simple search that redirects to /user/"searchterm"/重定向到 /user/"searchterm"/ 的简单搜索
【发布时间】:2012-05-01 09:56:53
【问题描述】:

目前我正在与:

<form action="/user/" method="get">
<input type="text" name="" id="" size="20" value="">
<input type="submit" value="Search">
</form>

但是,这会重定向到/user/?=searchterm
我希望它重定向到/user/searchterm
我知道这很容易,我只是想不通。

编辑:如果我不清楚。我希望表单使用输入的参数并将浏览器重定向到 /user/(parameter)

【问题讨论】:

    标签: html forms


    【解决方案1】:

    将 '/user/?=searchterm' 更改为 '/user/searchterm' 很难做到;使用 .htaccess 文件或 mod-rewrite 将“/user/q=searchterm”更改为“/user/searchterm”更容易。
    查询字符串应始终采用格式 '?q=a';将其设为 '?=a' 格式没有多大意义。

    【讨论】:

      【解决方案2】:

      您有两种选择。

      1. 在提交后将用户重定向到正确的页面(使用 PHP 的示例):

        HTML

        <form action="/usersearch/" method="post">
          <input type="text" name="user" id="" size="20" value="">
          <input type="submit" value="Search">
        </form>
        

        PHP

        if (!isset($_REQUEST['user'])) {
            header('Location: http://example.com/search'); //redirect back to search page
            exit();
        }
        
        header('Location: http://example.com/user/' . $_REQUEST['user']);
        exit();
        
      2. 使用 javascript 捕获提交和重定向(我使用 jQuery,因为我是懒惰的 ATM,但使用 vanilla JS 也可以):

        ​(function($) {
            $('form').submit(function() {
                window.location = "http://example.com/user/" + $('input[name="user"]', this).val();
        
                return false;
            });
        })(jQuery)​
        

      【讨论】:

        【解决方案3】:

        它不能(也不应该!)在常规 HTML 中完成。您需要使用 JavaScript 来伪造表单提交(通过根据搜索词重定向到链接,并使用 URL 重写指向正确的$_GET 变量地址)。

        【讨论】:

        • 如果 JavaScript 被关闭了怎么办?不妨将他们发送到一个搜索页面,在那里他们会获得他们正在搜索的可能页面的列表。
        • 关闭 JavaScript 是不可能的。时期。这是一件好事。
        • 哦,这是可能的。它甚至可能与 JavaScript 混淆,因为它是客户端代码。 google.com/…
        • @Chillie:他正在寻找的东西,在表单提交之后更改地址,没有 JavaScript 是不可能的。 使用 JavaScript 也很难做到。您需要伪造按钮,或者弄乱表单提交,这两者都很糟糕。所以不要。
        • @Chillie:你应该让你的网站首先支持它!听说过URL Rewriting?拜托,当 3 个人告诉你你错了,并且有更好的方法时,请承认你可能错了,让我们继续前进。
        【解决方案4】:

        改变这个:

        <form action="/user/" method="get">
        

        到这里:

        <form action="/user/" method="post">
        

        通过使用get,将值添加到 URL。通过使用post,值不会添加到 URL。

        编辑: 误读问题...

        我不确定你为什么要这样做,它会使链接有点像页面链接,但无论如何,如果你使用 Apache,我建议使用mod_rewrite。这里还有另一个问题,有一个很好的答案可能会有所帮助。你只需要拥有价值

        https://stackoverflow.com/a/4674388/1076164

        【讨论】:

        • 是的...我正在寻找传递参数的表单(对不起,如果不清楚)所以如果“x”是参数,当表单提交时,结果将重定向到/用户/x
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-22
        • 2011-01-15
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多