예 : 나는 페이지가 페이지에있는 http://mysite.com?page=3&var=10
또한있다 페이지가있다.PHP를 사용하여 URL 변경
양식이 거기에 PHP에서 몇 가지 조치를 제출했을 때 양식을 어떻게 든 제출 한 후이 ?page=3&var=10
을 제거해야합니다. mod_rewrite없이 모든 브라우저 물마루 PHP와 호환되는 방법이 있습니까?
예 : 나는 페이지가 페이지에있는 http://mysite.com?page=3&var=10
또한있다 페이지가있다.PHP를 사용하여 URL 변경
양식이 거기에 PHP에서 몇 가지 조치를 제출했을 때 양식을 어떻게 든 제출 한 후이 ?page=3&var=10
을 제거해야합니다. mod_rewrite없이 모든 브라우저 물마루 PHP와 호환되는 방법이 있습니까?
action=index.php
을 사용하는 경우 모든 값은 색인 php에 게시되며 ?page=3&var=10
은 자동으로 제거됩니다.
같은 페이지에 게시하려면 다음 중 하나를 수행 할 수 있습니다 사용 '행동 = index.php를? 페이지 = 3 & VAR = 10'또는 action=<?php echo $_SERVER['PHP_SELF'] ?>
뭔가 제출 한 경우 페이지의 시작 부분에서 확인하실 수 있습니다 header('Location: http://www.example.com/ ');
원하는대로 리디렉션하십시오. 헤더 함수에 대한 추가 정보 http://php.net/manual/en/function.header.php
PHP_SELF는'$ _SERVER [ 'REQUEST_URI']'에있는 실제 uri의 경로와 반대로 php * 스크립트 *의 이름입니다. 그들은 본성과 목적이 완전히 다릅니다. 따라서'PHP_SELF'는 단일 PHP 스크립트가 수천 개의 다른 URL 경로를 나타낼 수있을 때 * 원본 * URL을 변경하는 데 유용한 정보가 아닙니다. – user3338098
이 기능이 유용합니까?
header('Location:/');
그래, 해결책은 아주 간단합니다 (경우에도 정말 SEO 친화적 인)입니다 :
<?php
header("Location: http://mysite.com")
?>
은 정보를 당신은 왜 필요합니까 ...?
mod_rewrite는 외부에서 볼 수있는 리디렉션을하지 않는 한 사용자 브라우저의 주소 표시 줄에 표시되는 내용에는 영향을 미치지 않습니다. 그렇지 않으면 웹 서버 내에서만 내용이 다시 쓰여지고 사용자에게는 보이지 않습니다.
사용자의 주소 표시 줄에 영향을 주려면 양식 처리가 완료된 후 header('Location: ...')
을 통해 리디렉션을해야합니다.
parse_str
을 사용하면 쿼리 문자열을 수정하기 쉬운 연관 배열로 사용할 수 있습니다. 그런 다음 http_build_query
을 사용하여 연관 배열을 쿼리 문자열로 변환합니다.
$queryString = $s['QUERY_STRING'];
$params = array();
parse_str($queryString, $params);
//change $params as needed
$queryString = http_build_query($params);
if ($queryString) {
$queryString = '?'.$queryString;
}
return preg_replace("/\\?.*/s","",$s['REQUEST_URI']).$queryString;
preg_replace("/\\?.*/s","",$s['REQUEST_URI'])
은 대체 할 수 있도록 원래 쿼리 문자열을 제거합니다.
이 주제는 오래된 주제이지만 나중에 다른 사람이이 문제를 검색하는 경우 자바 스크립트 replaceState를 사용하여 기록 및 브라우저 바 라벨을 변경할 수 있습니다. 간단한 PHP 함수는이 작업을 수행합니다 : 다른 페이지를 호출 한 후
set_url("http://example.com");
페이지를 다시로드 또는 다시 :
는function set_url($url)
{
echo("<script>history.replaceState({},'','$url');</script>");
}
그리고 간단하게 (아마도 포스트 변수를 삭제) 원하는 URL이 함수를 호출 할 것 이제 새로운 URL 위치가 기록에 남습니다.
POST를 사용하면 좀 더 우아한 해결책이 될 수 있다고 생각하지만, GET을 사용해야하는 경우이 문제가 해결됩니다.
GET 대신 POST를 사용하면 제출 된 양식에서 매개 변수를 숨길 수 있습니다. –
POST를 사용하도록 양식을 변환하지 않으려면 먼저 URL에 매개 변수가 없어야합니다. 또는 나중에 리디렉션 할 수 있습니다. –
이 매개 변수는 양식이 아닌 페이지 매김에서 가져옵니다. – JohnA