0

我想让导航更容易,所以让我们说当我调用页面时

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

4

7 回答 7

1

尝试以下操作:

$basename = basename($_SERVER['REQUEST_URI']);

这应该会在 URL 中为您提供文件的名称,包括扩展名。当然,如果您想获得不带文件扩展名的文件名,请尝试:

$basename = str_replace(".php","",basename($_SERVER['REQUEST_URI']));

于 2012-11-02T17:36:53.083 回答
1

您应该使用 URL 重写。看一下Zend_RouterZend 框架中的组件。

并且为了获取当前文件 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();

?>
于 2012-11-02T17:38:03.423 回答
0

您不需要当前网址,您可以链接新的查询字符串:

带有html链接:

<a href="?foo=bar">

或 php 重定向:

Header("Location: ?foo=bar");
于 2014-07-01T07:11:23.513 回答
0

只需重定向到/xxx.php?$rest. 如果您不离开目录,则不需要完整地址。

于 2012-11-02T17:37:34.063 回答
0

我看不出它在生产站点上不起作用,但在本地起作用。

header("Location: {$_SERVER['REQUEST_URI']}?$rest");
于 2012-11-02T17:37:46.090 回答
0

您可以使用 $_SERVER['SCRIPT_NAME'] 变量来检索当前脚本的路径,即当前文件的完整路径和文件名

有关 $_SERVER 变量的更多详细信息,请参阅下面 url 中提到的文档

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

于 2012-11-02T18:13:16.993 回答
0

我喜欢在这些情况下使用正则表达式。(或者更确切地说,其他答案都不适用的情况,例如访问与此相关的文件。)

$foldername = preg_replace('/(.*)(\/admin\/.*)/', '$2', dirname(__FILE__));

$filename = preg_replace('/(.*)(\/admin\/.*)/', '$2', __FILE__);

请注意,这\/admin\/是在第二个捕获组的开头。$2使 preg replace 直接引用整个捕获组。因此 admin 必须是捕获组所在的 Web 根目录中的第一个文件夹。

于 2016-07-21T11:03:53.267 回答