我想让导航变得更容易,所以当我有一个名为
的页面时,我们可以说http://test.nl/admin/xxx.php?id=423
如果我想使用不同的参数重定向到同一页面。我能做到
Header("Location: xxx.php$rest");
但有没有办法让xxx.php动态化? 我尝试了$ _SERVER [PHP_SELF]并且它在localhost上工作但在我的服务器上没有。 我得到:http://test.nl/test.nl/admin/xxx.php?id=423
答案 0 :(得分:1)
尝试以下方法:
$basename = basename($_SERVER['REQUEST_URI']);
这应该为您提供URL中文件的名称,包括扩展名。当然,如果您想要文件名没有文件扩展名,请尝试:
$basename = str_replace(".php","",basename($_SERVER['REQUEST_URI']));
答案 1 :(得分:1)
您应该使用URL重写。看一下Zend框架中的组件Zend_Router
。
并且为了获取当前文件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();
?>
答案 2 :(得分:0)
只需重定向到/xxx.php?$rest
即可。如果您不离开目录,则不需要完整地址。
答案 3 :(得分:0)
我不知道它在生产网站上不起作用,而是在本地发挥作用。
header("Location: {$_SERVER['REQUEST_URI']}?$rest");
答案 4 :(得分:0)
您可以使用$ _SERVER ['SCRIPT_NAME']变量来检索当前脚本的路径,即当前文件的完整路径和文件名
有关$ _SERVER变量的更多详细信息,请参阅以下url
中提到的文档答案 5 :(得分:0)
您不需要当前网址,您可以链接新的查询字符串:
使用html链接:
<a href="?foo=bar">
或php重定向:
Header("Location: ?foo=bar");
答案 6 :(得分:0)
我喜欢在这些情况下使用正则表达式。 (或者更确切地说,其他答案都不适用,例如访问相对于此文件的文件。)
$foldername = preg_replace('/(.*)(\/admin\/.*)/', '$2', dirname(__FILE__));
$filename = preg_replace('/(.*)(\/admin\/.*)/', '$2', __FILE__);
请注意\/admin\/
位于第二个捕获组的开头。 $2
为preg替换了对整个捕获组的直接引用。因此,admin必须是捕获组所在的Web根目录中的第一个文件夹。