如何将 Apache httpd 根路径重写为子目录?

如何将 Apache httpd 根路径重写为子目录?

虽然我在其他地方看到过类似的问题,但其中一些问题询问如何重定向确切的根路径,否则提供的答案并不总是正常工作。

我需要重写从根目录开始到文档根目录的子目录的所有路径。

其中一个可能的解决方案是简单地更改文档根目录。但是,根据您配置虚拟主机的方式或编写其他规则,这可能并不总是最好的选择。

答案1

可以通过不同的方式实现。下面是使用 mod_rewrite 的简单方法。

更新:

这适用于需要排除根目录下的其他目录的情况,例如 phpMyAdmin。在这种情况下以及其他一些情况下,使用 Last [L] 规则是有问题的。添加所需的排除项来代替 phpMyAdmin,并用竖线“|”分隔。

RewriteEngine on
RewriteRule ^/(?!phpMyAdmin|mydir).* /mydir$0 [NE]

以前的解决方案:

RewriteEngine on
RewriteRule /mydir.* $0 [L]
RewriteRule /.* /mydir$0 [NE]

请注意,虽然我见过一些人尝试使用单一规则重写,但我相信中间行对于防止递归是必要的。

相关内容