如何从重写的url中删除变量,并保留删除的url变量


How to remove variables from rewrited url and keep removed url variables

我的索引页;

<form id="myfom" action="x.php" method="get">
<fieldset>
<select name="a1" id="a1">
<option value="o1">o1</option>
<option value="o2">o2</option>
</select>
<select name="a2" id="a2">
<option value="oo1">oo1</option>
<option value="oo2">oo2</option>
</select>
<select name="a3" id="a3">
<option value="ooo1">ooo1</option>
<option value="ooo2">ooo2</option>
</select>
<select name="a4" id="a4">
<option value="oooo1">oooo1</option>
<option value="oooo2">oooo2</option>
</select>
<select name="a5" id="a5">
<option value="ooooo1">ooooo1</option>
<option value="ooooo2">ooooo2</option>
</select>
<select name="a6" id="a6">
<option value="oooooo1">oooooo1</option>
<option value="oooooo2">oooooo2</option>
</select>

<script type="text/javascript">
function murl() {
    var grp1 = document.getElementById('a1').options[document.getElementById('a1').selectedIndex].value;
    var grp2 = document.getElementById('a2').options[document.getElementById('a2').selectedIndex].value;
    var grp3 = document.getElementById('a3').options[document.getElementById('a3').selectedIndex].value;
    var grp4 = document.getElementById('a4').options[document.getElementById('a4').selectedIndex].value;
    var grp5 = document.getElementById('a5').options[document.getElementById('a5').selectedIndex].value;
    var grp6 = document.getElementById('a6').options[document.getElementById('a6').selectedIndex].value ;
    var url = "http://www.domain.com/"+grp1+"-"+grp2+"-"+grp3+"-"+grp4+"-"+grp5+"-"+grp6+".html";
    document.forms["myform"].submit();
    window.location.href=url;
}
</script>
<input type="button" onclick="murl()" />
</fieldset>
</form>

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)-(.*)-(.*)-(.*)-(.*)-(.*)'.html$ x.php?a1=$1&a2=$2&a3=$3&a4=$4&a5=$5&a6=$6 [L,QSA]

网站是这样工作的;http://www.domain.com/a1-a2-a3-a4-a5-a6.html

我的问题是;我希望url是http://www.domain.com/a1-a2-a3.html

但我也想得到的变量是a4,a5,a6的新页面(提交表单x.p php后)

尝试了很多东西,比如rewritecsecond %{QUERY_STRING},

任何帮助都是非常感谢的。

这是不可能的,至少不是直接的。如果从URL中删除内容,它就消失了。

你必须调用一个PHP脚本与完整的URL a1-a2-a3-a4-a5-a6.html,存储a4-a6在一个会话变量,并做一个header()重定向到a1-a2-a3.html。但是,如果同一个用户代理发出多个请求,这将造成麻烦—要解决这个问题,还可以在目标页面上检查$_SERVER["HTTP_REFERER"]

两者都相当复杂。你确定你需要这个吗?