我有一个要解决的问题。第一个网址允许我在网站上显示信息或不显示信息。工作正常。 我以“帐户和编辑”为例,并采取措施。
http://localhost/boutique/index.php?Account&Edit
$_SERVER['QUERY_STRING'] = Account&Edit
如果我重写url,系统将无法运行,并且Account&Edit变为Account / Edit
http://localhost/boutique/index.php/Account/Edit
$_SERVER['QUERY_STRING'] = '';
此元素“帐户和编辑”更改时如何解决此元素?
$_SERVER['QUERY_STRING']
是空的。
谢谢。
我这样做是为了解决问题。
public function getUrlwithoutSEFU() {
if (empty($_SERVER['QUERY_STRING'])) {
$url = $_SERVER['REQUEST_URI'];
$replace = str_replace('index.php', '', $url);
$replace = str_replace(CLICSHOPPING::getConfig('http_path'), '', $replace);
$replace = substr($replace, 1);
$replace = str_replace('/', '&', $replace);
$url_string = $replace;
} else {
$url_string = $_SERVER['QUERY_STRING'];
}
return $url_string;
}
答案 0 :(得分:0)
看看RFC3875: The Common Gateway Interface (CGI) Version 1.1
当请求URL中没有?
时,就没有查询字符串。
看REQUEST_URI
很有道理。
这是将请求URL拆分为环境var的方式:
# QUERY_STRING
# ↓↓↓↓↓↓↓↓↓↓↓↓
http://localhost/boutique/index.php?Account&Edit
或(直接调用的)PHP脚本之后的部分。 (这可能取决于SAPI或受到重写规则的影响。)
# PATH_INFO
# ↓↓↓↓↓↓↓↓↓↓↓↓↓
http://localhost/boutique/index.php/Account/Edit
或完整路径:
# REQUEST_URI
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
http://localhost/boutique/index.php/Account/Edit
值得注意的是,您那时必须自己将其拆分。例如,在某些设置的REDIRECT_REQUEST_URI
数组中,也可能显示为$_SERVER
。
答案 1 :(得分:0)
解决方案
public function getUrlwithoutSEFU() {
if (empty($_SERVER['QUERY_STRING'])) {
$url = $_SERVER['REQUEST_URI'];
$replace = str_replace('index.php', '', $url);
$replace = str_replace(CLICSHOPPING::getConfig('http_path'), '', $replace);
$replace = substr($replace, 1);
$replace = str_replace('/', '&', $replace);
$url_string = $replace;
} else {
$url_string = $_SERVER['QUERY_STRING'];
}
return $url_string;
}