如何使用 htaccess 从 URL 中删除子文件夹

用户10756951

我们有这些类型的 URL:

https://www.example.com/public/something/something

我需要删除 /public/ 子文件夹,以便使用 301 重定向将带有此子文件夹的每个重复 URL 重定向到相同的 URL,但没有子文件夹。上面的例子将被重定向到:

https://www.example.com/something/something

我试过这个:

RewriteRule ^public/(.*)$ /$1 [L,NC,R=301]

该示例仍然返回 200。如何将带有 /public/ 的每个 URL 重定向到没有子文件夹的相同 URL?如果可能的话,你能解释一下简要处理它的 .htacces 代码吗?

编辑:我们在服务器上发现了另一个隐藏的 .htaccess 文件,它似乎是我们需要设置的文件。这是它的内容:https : //gist.github.com/zatkoma/6425eb2f93c3c6affd46828de044e95b

我们在此处添加了该行,但仍然没有任何反应。我们到底应该把这条线放在哪里?

谢谢

杜桑·巴伊奇

您的配置中有两个问题:第一个是在 subfolder 中时.htaccessRewriteRule pattern将删除该子文件夹的路径,因此^public/永远不会匹配。
第二个有点困难:您要求您的站点位于/public子文件夹中,因此当用户输入 URL 时/public,您(在 root htaccess 中)将其重写为/public/...
但同时您想要,如果有人写以 开头的 URL /public/,您想要它被删除。
这可以通过检查原始请求(在浏览器中输入)是否包含 /public 来实现。所以现在的流程是:

  1. 检查请求是否有/public,如果没有则在内部添加它,然后转到/public(由root中的htaccess完成)
  2. 当在/public(因此子文件夹.htaccess有效)时,不要检查请求是否以/public(因为它总是如此)开头,而是检查是否原始请求(在步骤 1 之前)。had /public,并且只有当它有时,才在没有 /public 的情况下重写 URL

    RewriteCond %{THE_REQUEST} \s/public/
    RewriteRule (.*) /$1 [L,NC,R=301]
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.htaccess:如何在URL中删除子文件夹的子文件夹?

使用 htaccess 在 url 中隐藏子文件夹

使用htaccess从URL中删除文件夹名称

使用htaccess删除子文件夹

仅使用 Htaccess 删除指定 URL 的子文件夹 [Codeigniter]

如何通过htaccess从URL中删除文件名和文件夹名

使用.htaccess从URL删除目录文件夹

使用htaccess删除文件夹表单URL

在 Apache 中,如何使用子文件夹 .htaccess 文件对 URL 的无斜杠版本进行外部重定向

如何使用htaccess重写子文件夹中文件的URL

使用.htaccess动态重定向到子文件夹,在不使用域名的情况下将子文件夹隐藏在url中

使用htaccess重定向子托管域上的文件类型包括URL中的文件夹名称

WordPress的子文件夹的URL htaccess的

使用.htaccess从URL中删除index.php和根文件夹内的另一个页面

.htaccess 文件夹或子文件夹中的动态 URL

。htaccess-使用HTTPS重定向到子文件夹,同时隐藏URL部分

使用与子文件夹前缀匹配的.htaccess URL进行重定向

使用.htaccess忽略URI中的子文件夹

使用.htaccess重定向子文件夹中的页面

使用htaccess删除文件夹名称

使用Htaccess删除文件夹名称

.htaccess URL重写(从URL删除文件夹)

如何使用 .htaccess 从 url 中删除 %20

如何使用.htaccess从URL中删除.cgi?

htaccess将URL重写为子文件夹中的查找文件

htaccess子文件夹中只能访问一个文件并保留url

htaccess 用最终的子文件夹重写 url

.htaccess将URL重写为模拟的子文件夹

子文件夹的htaccess重写规则(漂亮的url)