使用表单和3个参数重写URL

时间:2012-07-14 16:14:31

标签: php .htaccess

我有一个表格有3个参数的网页,比如

  

http://www.likeforex.com/currency-converter/fxconverter.php?f=euro-eur&t=usd-us-dollar&amt=1

我使用.htaccess将页面重写为:f_t.htm/amt as:

  

http://www.likeforex.com/currency-converter/euro-eur_usd-us-dollar.htm/1

但是,我的问题是当用户更改amt的值(页面中间)时,表单将被重新汇总,并且重新汇总的页面仍然是参数格式。如何在重写格式后制作网址?

提交按钮或其他任何内容都有问题?

the form:
<form name="e" method="get" action="fxconverter.php">
the amt parameter:
<input type="text" id="amt" name="amt" size="16" maxlength="16" value="'.$amt.'" onclick="this.focus();this.select();" />'
the submit button:
<input type="submit" value="Convert" class="bt" />
the .htaccess line: 
RewriteRule ^(.*)_([^_]+)\.htm/([^/]+)$ fxconverter.php?f=$1&t=$2&amt=$3 [NC]

非常感谢你。

1 个答案:

答案 0 :(得分:1)

您无法使用表单,无论POST/GET如何,并希望输出的参数类似于网址,例如http://www.likeforex.com/currency-converter/euro-eur_usd-us-dollar.htm/1

你需要做的是稍微更改表单并使用javascript构建网址然后重定向。

<script>
function goForm(form){
    f = form.elements["f"].value;
    t = form.elements["t"].value;
    amt = form.elements["amt"].value;

    window.location.href = 'http://www.likeforex.com/currency-converter/'+f+'_'+t+'.htm/'+amt;
}
</script>

<form name="currencyForm" method="GET" action="">
<input id="f" name="f" value="euro-eur" type="hidden">
<input id="t" name="t" value="usd-us-dollar" type="hidden">
<input id="amt" name="amt" size="16" maxlength="16" value="1" onclick="this.focus();this.select();" type="text">
<input type="button" name="button" value="Click" onClick="goForm(this.form)">
</form>

然后你可以利用mod_rewrite。

我个人会废弃GET(对于花哨的网址)而只使用POST。搜索引擎不会查询您的表单,因此使用GET没有任何优势,只有这样才能让想要刮掉您的内容的人更容易消化其工作。还记得没有启用javascript的任何人都不能在我的解决方案中使用该表单。