簡體   English   中英

使用PHP更改URL

[英]Change URL using PHP

例如,我有網址為http://mysite.com?page=3&var=10頁面,頁面上也有表格。

當表單提交時,在php中有一些動作,但是提交表單后,我需要刪除此?page=3&var=10 ,這種方式是否可以與所有通過PHP的瀏覽器兼容,而無需mod_rewrite?

這是一個古老的話題,但是以防萬一將來有人在搜索這個話題,您可以使用javascript replaceState更改歷史記錄和瀏覽器欄標簽。 一個簡單的php函數可以做到這一點:

function set_url( $url )
{
    echo("<script>history.replaceState({},'','$url');</script>");
}

然后只需使用所需的url調用此函數(大概刪除post變量):

set_url("http://example.com");

重新加載頁面或調用另一個頁面后返回頁面現在將在歷史記錄中具有新的url位置。

我認為使用POST可能是一個更優雅的解決方案,但是如果必須使用GET,則可以解決此問題。

使用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'])刪除原始查詢字符串,使您可以替換它。

這對您有用嗎?

header('Location:/');

是的,解決方案非常簡單(即使不是非常友好的SEO):

<?php
 header("Location: http://mysite.com")
?>

僅作為信息...您為什么需要它?

如果您使用action=index.php ,那么所有值都將發布到索引php中, ?page=3&var=10將被自動刪除。

如果要發布到同一頁面,則可以使用'action = index.php?page = 3&var = 10'或action=<?php echo $_SERVER['PHP_SELF'] ?>

您可以在頁面的開頭檢查是否提交了某些內容,然后使用header('Location: http://www.example.com/ ');重定向到所需的內容header('Location: http://www.example.com/ '); 有關標頭函數的更多信息http://php.net/manual/zh/function.header.php

mod_rewrite不會影響用戶瀏覽器地址欄中顯示的內容,除非重寫執行外部可見的重定向。 否則,它只會重寫Web服務器中的內容,而這對於用戶是不可見的。

如果要影響用戶的地址欄,則必須在表單完成處理后通過header('Location: ...')進行重定向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM