[英]php redirect with HTTP query string variables
atm我正在使用以下四行將用戶重定向到我網站上的另一個頁面:
<?php
header("Status: 301 Moved Permanently");
header("Location: ./content/index.html");
exit;
?>
但使用HTTP查詢字符串變量(如http://< url >?param=blah
它們不會被理解為附加到url。
實施這個是否有明智之舉?
問候
<?php
header("Status: 301 Moved Permanently");
header("Location:./content/index.html?". $_SERVER['QUERY_STRING']);
exit;
?>
要執行重定向並確保在未傳遞查詢字符串時未顯示額外的問號,請使用以下命令
function preserve_qs() {
if (empty($_SERVER['QUERY_STRING']) && strpos($_SERVER['REQUEST_URI'], "?") === false) {
return "";
}
return "?" . $_SERVER['QUERY_STRING'];
}
header("Status: 301 Moved Permanently");
header("Location: ./content/index.html" . preserve_qs());
我想補充一個選項......
無論如何 - 就像其他人所說的那樣,使用( .htaccess ) mod_rewrite可能是最好的選擇。
然而,
當你必須在PHP中執行它時,肯定會有很多情況=>你有兩個選擇:
$_SERVER['QUERY_STRING']
附加重定向URI http_build_query($_GET);
選項2. - 優勢(+)
$_GET
參數,如: $_GET['new_param']="new value";
(加) unset($_GET['param_to_remove']);
(去掉) $_GET
=>環境獨立 http_build_query()
的第一個參數實際上可以是任何數組或對象,因此您可以從$_POST
或$o = new YourObject();
構建$_GET
類似的請求$o = new YourObject();
如有必要 選項2. - 缺點( - )
有關詳細信息,請參閱http://www.php.net/manual/en/function.http-build-query.php - 一個關於http_build_query()
函數的PHP手冊網站,它Returns a URL-encoded string.
使用$_SERVER['QUERY_STRING']
並將其附加到重定向的末尾可能就是您要找的內容。
編輯:剛剛注意到我的回復有點晚了。
首先,為什么不重新導入mod重寫?
但無論如何,您可以將$ _SERVER ['QUERY_STRING']連接到您網址的末尾
添加$_SERVER['REQUEST_URI']
或QUERY_STRING
。 做一個print_r($_SERVER);
查看有關請求的URL的更多信息。
我還建議使用mod_rewrite執行此任務,您可以更靈活。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.