在我们的网络服务器上,目录已从一个位置“复制”到另一个位置。现在原始位置已消失,但我收到了提供到新位置的重定向请求。
我认为 mod_rewrite 是实现此目的的最佳方法,尽管我并不反对使用其他方法(如果可用)。URL 方案如下。
Old URL: www.exampleurl.com/subdir1/olddirectory/subdir2
New URL: www.exampleurl.com/subdir1/newdirectory/subdir2
Subdir1 永远不会改变,因此它和 .com 部分可能被忽略。但是 subdir2 目录通常直接访问,并且有许多不同的选项。
我们已经使用 mod_rewrite 通过 SSL/TLS 重定向所有流量,因此继续这样做可能是最好的效果。
根据目前的评论和回答,我觉得这里缺少一些信息。因此,以下是所讨论的站点和目录的配置方式,非常基础。希望这将有助于进一步解答。
该站点分布在两个 VirtualHost 配置的两个文件中,一个用于 HTTP,一个用于 HTTPS。HTTP VirtualHost 包含一个 mod_rewrite 条件和规则,用于将进入其中的所有流量重定向到 HTTPS 端口。相关目录在 conf-enabled 中的单独文件中配置。两者都包含 Alias 声明和 Directory 区域。Alias 是必需的,因为实际文件在 NFS 挂载的 /mnt 目录中。
答案1
使用 mod_rewrite 你可以做这样的事情:
RewriteRule ^/?(subdir1)/olddirectory(?:$|/)(.*) https://www.example.com/$1/newdirectory/$2 [R=301,L]
以上内容将重定向如下:
/subdir1/olddirectory
到/subdir1/newdirectory/
/subdir1/olddirectory/
到/subdir1/newdirectory/
/subdir1/olddirectory/<something>
到/subdir1/newdirectory/<something>
并重定向到 HTTPS + 规范主机名,因此可以放置前您现有的规范重定向,以尽量减少重定向的次数。
首先使用 302(临时)重定向进行测试,以避免缓存问题。