将文件夹重写到不同域的 Apache 规则

将文件夹重写到不同域的 Apache 规则

我需要将所有有关文件夹的请求重定向到另一个名为 www2 的(旧)Web 服务器,并保留整个原始路径,例如

https://www.example.org/thisfolder/maps/map.jsp?id=2345 必须重定向至 https://www2.example.org/thisfolder/maps/map.jsp?id=2345

我认为解决方案是使用带有 RewriteRule 指令的 mod_rewrite 模块,应该很简单,但我找不到一个可行的示例。我尝试过

<IfModule !mod_rewrite.c>
    LoadModule rewrite_module  modules/mod_rewrite.so
</IfModule>
<Directory "/thisfolder">
    RewriteEngine On
    RewriteBase "/thisfolder"
    RewriteRule "(.*)" "https://www2.example.org/$1"
</Directory>

这是在 Linux CentOS 7.6(Red Hat Enterprise)上运行的 Apache2.4 安装。非常感谢您的帮助!

答案1

笔记这种简单的重定向要求是教科书案例在这里您不需要 mod_rewrite。

当发现其他替代方案不尽如人意时,mod_rewrite 应被视为最后的手段。当有更简单的替代方案时使用它会导致配置混乱、脆弱且难以维护。

一个简单的 Redirect 指令对于你的情况来说已经足够了:

 Redirect "/thisfolder" "https://www2.example.org/thisfolder"

答案2

<Directory>指令适用于文件系统路径,而不是 URL 路径,因此我们需要将其更改为,<Location>并且我们还必须正确捕获之后的请求"thisfolder/"

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule "^/thisfolder/(.*)" "https://www2.example.org/thisfolder/$1" [R=301,L]
</IfModule>

相关内容