你如何收到你当前的php文件网址

时间:2012-11-02 17:34:42

标签: php url navigation uri

我想让导航变得更容易,所以当我有一个名为

的页面时,我们可以说
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

7 个答案:

答案 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

中提到的文档

http://in3.php.net/reserved.variables.server

答案 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根目录中的第一个文件夹。