如何从表单直接发送用户mod-rewrite url?

时间:2011-12-06 17:03:56

标签: php search mod-rewrite

我正在使用此表单在我的网站上搜索

<form id="search" action="/search.php" method="get">
        <input type="text" onfocus="this.value='';this.style.color='black'" value="Search here" name="tag" id="search-text" />
                    <input type="image" src="/search-new.gif" alt="Search" id="search-submit" />
              </form>

当我用它搜索时,我得到一个这样的网址

http://www.mysite.com/search.php?tag=query

但我在我的网站上使用重写规则,我有这样的网址

http://www.mysite.com/search/query

这显示了相同的结果

我想要的是用户搜索时 而不是显示此网址

http://www.mysite.com/search.php?tag=query

它应该显示我的重写规则url

http://www.mysite.com/search/query

我怎么做?

3 个答案:

答案 0 :(得分:1)

我会覆盖表单的onSubmit()事件,并通过将window.location更改为您喜欢的URL(仅将查询值连接到结尾)来使用javascript重定向自己

这是一个快速而又肮脏的例子:

<script type="text/javascript">

    function form_submitted()
    {
        var new_url = "http://www.mysite.com/search/" + encodeURIComponent(document.getElementById('search-text').value);
        window.location = new_url;
        return false;
    }

</script>

<form id="search" onsubmit="return form_submitted()">
<input type="text" value="Search here" name="tag" id="search-text" />
<input type="image" src="/search-new.gif" alt="Search" id="search-submit" />
</form>

答案 1 :(得分:0)

您需要将表单修改为GET / search /并添加一个提交处理程序(在JavaScript中),以创建“美化”的URL。

mod_rewrite重写内部URL,而不是用户看到的URL。

答案 2 :(得分:0)

您可以使用mod_rewrite对经过美化的URL进行外部重定向。有关“永久重定向”的信息,请参阅mod_rewrite文档。

由于这需要额外的往返(首先为/search.php?tag=query发送请求,因此会发送到/search/query的外部永久重定向,然后浏览器会提取网址/search/query在内部重写为实际的PHP脚本),我会在另一个回复中添加一个JavaScript快捷方式(注意它在没有JavaScript的情况下仍然可以工作)。