RewriteRule ^(.*)_([^]+).htm/([0-9.]+)$ a.php?f=$1&t=$2&amt_from=$3 [NC]
我使用3個參數調用了a.php。我能夠使用上面的重寫規則,並且a_b.htm/c可以工作。在PHP中重寫url
我的問題是,當用戶點擊提交表單按鈕,他們仍然可以看到 a.php?f=$1&t=$2&amt_from=$3
我該如何解決呢?
非常感謝。
RewriteRule ^(.*)_([^]+).htm/([0-9.]+)$ a.php?f=$1&t=$2&amt_from=$3 [NC]
我使用3個參數調用了a.php。我能夠使用上面的重寫規則,並且a_b.htm/c可以工作。在PHP中重寫url
我的問題是,當用戶點擊提交表單按鈕,他們仍然可以看到 a.php?f=$1&t=$2&amt_from=$3
我該如何解決呢?
非常感謝。
你需要你的表單來生成正確的URL。這隻適用於一些Javascript,但基本上可以這樣工作:
<form action="a.php" method="GET" onsubmit="rewrite_form(event);">
<input name=f value=123>
<input name=t value=ABCABC>
<input name=amt_from value=XYZXYZXYZ>
<input type=submit>
<script type="text/javascript">
function rewrite_form(e) {
var form = document.forms[0]; // .getElementById("form1");
window.location = '' + form.f.value + '_' + form.t.value + '.htm/' + form.amt_from.value;
if (e && e.preventDefault) { e.preventDefault(); }
return false;
}
</script>
所以基本上表單提交會生成您想要的更好的URL。如果瀏覽器不支持Javascript,它將回退到更復雜的GET參數化URL。
樂更新:表單元素訪問不正確,你通常只需要document.forms[0].fieldname.value
。我已經將URL構造移植到一個單獨的函數中。在Opera/Chrome/Firefox中使用event.preventDefault();
時,onsubmit=
方法運行良好。
在給定的URL與請求的URL匹配後,您是否有任何重寫規則? – outis 2011-05-10 20:10:25
您可以顯示a.php的實際表單或完整內容嗎? – John 2011-05-10 20:30:54