我们有这些类型的 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 中时.htaccess
,RewriteRule
pattern将删除该子文件夹的路径,因此^public/
永远不会匹配。
第二个有点困难:您要求您的站点位于/public
子文件夹中,因此当用户输入 URL 时/public
,您(在 root htaccess 中)将其重写为/public/...
但同时您想要,如果有人写以 开头的 URL /public/
,您想要它被删除。
这可以通过检查原始请求(在浏览器中输入)是否包含 /public 来实现。所以现在的流程是:
当在/public
(因此子文件夹.htaccess
有效)时,不要检查请求是否以/public
(因为它总是如此)开头,而是检查是否原始请求(在步骤 1 之前)。had /public
,并且只有当它有时,才在没有 /public 的情况下重写 URL
RewriteCond %{THE_REQUEST} \s/public/
RewriteRule (.*) /$1 [L,NC,R=301]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句