我想让导航更容易,所以让我们说当我调用页面时
http://test.nl/admin/xxx.php?id=423
如果我想使用不同的参数重定向到同一页面。我可以
Header("Location: xxx.php$rest");
但有没有办法让 xxx.php 动态?我试过 $_SERVER[PHP_SELF] 它在本地主机上工作,但在我的服务器上却不行。我得到:http ://test.nl/test.nl/admin/xxx.php?id=423
我想让导航更容易,所以让我们说当我调用页面时
http://test.nl/admin/xxx.php?id=423
如果我想使用不同的参数重定向到同一页面。我可以
Header("Location: xxx.php$rest");
但有没有办法让 xxx.php 动态?我试过 $_SERVER[PHP_SELF] 它在本地主机上工作,但在我的服务器上却不行。我得到:http ://test.nl/test.nl/admin/xxx.php?id=423
尝试以下操作:
$basename = basename($_SERVER['REQUEST_URI']);
这应该会在 URL 中为您提供文件的名称,包括扩展名。当然,如果您想获得不带文件扩展名的文件名,请尝试:
$basename = str_replace(".php","",basename($_SERVER['REQUEST_URI']));
您应该使用 URL 重写。看一下Zend_Router
Zend 框架中的组件。
并且为了获取当前文件 URL:
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
echo curPageURL();
?>
您不需要当前网址,您可以链接新的查询字符串:
带有html链接:
<a href="?foo=bar">
或 php 重定向:
Header("Location: ?foo=bar");
只需重定向到/xxx.php?$rest
. 如果您不离开目录,则不需要完整地址。
我看不出它在生产站点上不起作用,但在本地起作用。
header("Location: {$_SERVER['REQUEST_URI']}?$rest");
您可以使用 $_SERVER['SCRIPT_NAME'] 变量来检索当前脚本的路径,即当前文件的完整路径和文件名
有关 $_SERVER 变量的更多详细信息,请参阅下面 url 中提到的文档
我喜欢在这些情况下使用正则表达式。(或者更确切地说,其他答案都不适用的情况,例如访问与此相关的文件。)
$foldername = preg_replace('/(.*)(\/admin\/.*)/', '$2', dirname(__FILE__));
$filename = preg_replace('/(.*)(\/admin\/.*)/', '$2', __FILE__);
请注意,这\/admin\/
是在第二个捕获组的开头。$2
使 preg replace 直接引用整个捕获组。因此 admin 必须是捕获组所在的 Web 根目录中的第一个文件夹。