htaccess 重写到子文件夹而不是屏蔽

问题描述 投票:0回答:1

我想将

https://example.com/folder
重定向到
https://example.com/otherfolder/anotherfolder
,但地址栏仍显示
https://example.com/folder

没有关于完成这项工作的

.htaccess
教程,而且我在 StackOverflow 上能找到的唯一教程都是更复杂的问题。

到目前为止我已经尝试过:

RewriteEngine On
RewriteRule ^folder/?$ /otherfolder/anotherfolder

我得到了重写/重定向,但 URL 未被屏蔽。

编辑:已解决,见下文。缺少尾部斜杠。

apache .htaccess redirect mod-rewrite masking
1个回答
0
投票
RewriteRule ^folder/?$ /otherfolder/anotherfolder

我假设

/otherfolder/anotherfolder
必须是一个物理文件系统目录(来自名称“文件夹”以及事实上通常不会有一种方法来路由请求)。在这种情况下,您在 substitution 字符串(目标 URL)上缺少尾部斜杠。

如果没有尾部斜杠,mod_dir 将触发外部 301 重定向以附加尾部斜杠并公开重写的文件系统目录,因此您最终将看到到

/otherfolder/anotherfolder/
的外部重定向(注意尾部斜杠)。

请注意,这将是 301(永久)重定向并由浏览器持久缓存。

所以,规则应该这样写,with结尾斜杠:

RewriteRule ^folder/?$ /otherfolder/anotherfolder/ [L]

如果您有其他指令,您可能需要

L
(或
END
)标志。

© www.soinside.com 2019 - 2024. All rights reserved.