2011-05-10 7 views
1
RewriteRule ^(.*)_([^]+).htm/([0-9.]+)$ a.php?f=$1&t=$2&amt_from=$3 [NC] 

저는 3 개의 매개 변수를 가진 a.php를 호출합니다. 위의 재 작성 규칙을 사용할 수 있으며 a_b.htm/c가 작동합니다.URL을 PHP로 다시 작성

내 문제는 사용자가 폼에 제출 버튼을 클릭하면, 그들은 여전히 ​​내가 그 문제를 해결하려면 어떻게 a.php?f=$1&t=$2&amt_from=$3

을 볼 수있다?

고마워요. 당신은 사용자가 URL에 제출 된 값을보고 싶지 않는 대신하는 경우 양식이 URL의 형태를 만들고, 그래서 당신은 여전히하는 method="get"로 제출되기 때문이다

+0

요청한 URL과 일치하는 지정된 규칙 뒤에 어떤 다시 쓰기 규칙이 있습니까? – outis

+0

a.php의 실제 양식이나 전체 내용을 보여줄 수 있습니까? – John

답변

0

..

사용 후

+0

감사합니다. 나는 그것을 이해하지만 사용자가 주소 표시 줄에 a_b.htm/c를 보길 원합니다. 그 일을 어떻게 만드나요? – jon

+0

당신은 정말로 cant ... 당신의 URL을 확인하지 않는 PHP 스크립트가 아니라면, 당신이 원하는 것이 아니라면, 헤더 리디렉션 – Neal

+0

흠, 좋은 해결책이되어야합니다. 많은 사람들이 그렇게합니까? 나는 새로운 PHP 물건을 – jon

1

올바른 URL을 생성하려면 양식이 필요합니다. 이것은 일부 자바 스크립트에서만 가능하지만 기본적으로 다음과 같이 작동합니다.

<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 구조를 별도의 함수로 옮겼습니다. onsubmit= 방법은 Opera/Chrome/Firefox에서 event.preventDefault();으로 충분합니다.

+0

나중에 시도 할 것입니다. 고마워. – jon

+0

안녕, 마리오, 나는 이것들에 익숙하지. 제 문제에 대한 모범이 있습니까? 내가 $ f/$ t를 얻고 url에서 파싱 된 $ f_p/$ t_p를 사용하면 구문 분석이 필요합니까? 고마워요. – jon

+0

구문 분석으로 무엇을 의미하는지 모르겠습니다. JS url 연결 예에 대한 올바른 RewriteRule이 이미 있습니다. - 아니면 어디에서/왜 분석하고 싶은가? – mario

관련 문제