从 URL 中删除文件夹名称

Posted

技术标签:

【中文标题】从 URL 中删除文件夹名称【英文标题】:Remove folder name from URL 【发布时间】:2014-04-22 01:00:05 【问题描述】:

我的服务器中有一个域 www.domain.com 重定向到 /。

接下来我有 index.php 代码:

header("Location: http://domain.com/v3/");

当我输入 mydomain.com 时,我的 url 中有 mydomain.com/v3/。

如何从 Url 中删除 v3

【问题讨论】:

你不能从 URL 中删除任何东西,如果你这样做了,那么你的浏览器就会把你带到那里。我认为您应该从您的 URL 中删除 v3/ 并检查问题是否已解决,因为我试图理解它 【参考方案1】:

从您的 PHP 代码中删除 header 行,因为它正在执行重定向,并且在您的根 .htaccess 中有这个基于前瞻的规则:

RewriteEngine On

RewriteCond %THE_REQUEST ^[A-Z]3,\s/+v3/([^?\s]*) [NC]
RewriteRule ^ /%1 [R=302,L,NE]

RewriteRule ^((?!v3/).*)$ /v3/$1 [L,NC]

这基本上意味着如果请求不是以/v3/ 开头,则转发到/v3/,而不更改浏览器中的URL。

【讨论】:

【参考方案2】:

如果你是从 PHP 重定向,你可以使用parse_url 来清理它。

$url = "http://domain.com/v3/";

$host = parse_url( $url, PHP_URL_HOST); 
$scheme = parse_url( $url, PHP_URL_SCHEME); 

header( $scheme . '://' . $host );

【讨论】:

以上是关于从 URL 中删除文件夹名称的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 htaccess 从 url 中删除文件夹名称

从 url 中删除 joomla 视图名称和组件名称

从需求文件中删除未使用的包

从 url 隐藏目录名称和 index.php

从 URL 中删除应用程序名称

如何从 url 中删除 id 和 title 并用域后跟标题名称重写它?