Gra*_*uin 36 php redirect query-string
atm我正在使用以下四行将用户重定向到我网站上的另一个页面:
<?php
header("Status: 301 Moved Permanently");
header("Location: ./content/index.html");
exit;
?>
Run Code Online (Sandbox Code Playgroud)
但是使用HTTP查询字符串变量存在问题,例如http://< url >?param=blah
它们不会被理解为附加到url.
实施这个是否有明智之举?
问候
reg*_*ity 86
<?php
header("Status: 301 Moved Permanently");
header("Location:./content/index.html?". $_SERVER['QUERY_STRING']);
exit;
?>
Run Code Online (Sandbox Code Playgroud)
jon*_*tro 11
要执行重定向并确保在未传递查询字符串时未显示额外的问号,请使用以下命令
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());
Run Code Online (Sandbox Code Playgroud)
我想再添加一个选项......
无论如何 - 就像其他人说的那样,使用(.htaccess)mod_rewrite可能是最好的选择.
但是,
当你必须在PHP中执行它时,肯定有很多情况=>你有两个选择:
$_SERVER['QUERY_STRING']http_build_query($_GET);选项2. - 优势(+)
$_GET参数,如:( $_GET['new_param']="new value";添加)unset($_GET['param_to_remove']);(删除)$_GET=> environmentaly independenthttp_build_query()的第一PARAM实际上可以是任何数组或对象,以便可以建立一个$_GET从样请求$_POST或$o = new YourObject();如果必要的话选项2. - 缺点( - )
有关详细信息,请参阅http://www.php.net/manual/en/function.http-build-query.php - PHP手册中有关该http_build_query()功能的网站Returns a URL-encoded string.
| 归档时间: |
|
| 查看次数: |
76647 次 |
| 最近记录: |