PHP在查询字符串之前删除URL的一部分

PHP在查询字符串之前删除URL的一部分,php,Php,我有这样的urlhttp://example.com/dir1/dir2/dir3/dir4/Page.php?charts.htm我需要在querystring之前删除页面/扩展名,以便它输出http://example.com/dir1/dir2/dir3/dir4/?charts.htm $url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $temp = explode( '?' , $url ); $temp[0] = "

我有这样的url
http://example.com/dir1/dir2/dir3/dir4/Page.php?charts.htm
我需要在querystring之前删除页面/扩展名,以便它输出
http://example.com/dir1/dir2/dir3/dir4/?charts.htm

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$temp = explode( '?'  , $url );
$temp[0] = ""; //remove part before the ?
我甚至不确定我是否在正确的轨道上

$url = str_replace("Page.php", "", $url);

您可以结合使用
parse_url()
dirname()


如果希望页面重定向到url,但名称中没有page.php,那么您的思路是正确的。如果希望在每个请求上动态执行此操作,而无需在页面加载时重定向,则需要使用.htaccess。这将在页面上输出,而不是重定向。只需使用Page.php removedSee显示新的url即可
$url = "http://example.com/dir1/dir2/dir3/dir4/Page.php?charts.htm";
$urlArray = parse_url($url); // Array ( [scheme] => http [host] => example.com [path] => /dir1/dir2/dir3/dir4/Page.php [query] => charts.htm )

$newURL  = $urlArray["scheme"]."://".$urlArray["host"]."/";
$newURL .= dirname($urlArray["path"])."/?".$urlArray["query"];
// gives http://example.com/dir1/dir2/dir3/dir4/?charts.htm