将子文件夹重定向到 Apache、NGINX、IIS 和 Cloudflare 中的根文件夹

由于我的网站最初位于一个子目录中,我决定将其迁移至域名的根目录。

此次迁移的主要挑战在于,既要确保所有文章仍然可以通过与子目录相同的路径访问,又要将所有 URL 重定向到域名根目录或其他指定位置。

Apache 服务器

Apache HTTP 服务器支持使用 RewriteCond 指令来实现 URL 重定向。要进行此项更改,您需要编辑 .htaccess 文件或 httpd.conf 文件,并加入以下代码:

RewriteEngine on
RewriteBase /
RewriteRule ^subfolder/(.*)$ /$1 [R=301,NC,L]

上述配置中,我们使用 / 作为基础路径。RewriteRule 利用正则表达式匹配子目录下的所有 URL。参数 R=301 表明这是一个永久性重定向。

Nginx 服务器

对于 Nginx Web 服务器,我们也可以通过修改 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf 文件中的 rewrite 指令来实现类似的重定向:

location ^~ /subfolder {
     rewrite ^/subfolder(.*)$ $1 last;
}

这里的 ^~ 修饰符确保此特定前缀的 location 配置的优先级高于将来添加的任何其他使用正则表达式的 location 配置。

IIS 信息服务

在 IIS 中,我们可以通过重写模块来实现子目录 URL 的重定向,使得它们看起来就像位于根目录一样。您可以在 webroot 文件夹(通常位于 %SystemDrive%inetpubwwwroot)中的 web.config 文件中添加以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Root_URL_Rewrite" stopProcessing="true">
                    <match url="^(.*)" />
                    <action type="Rewrite" url="/subfolder/{R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

您也可以通过 IIS 管理器中的 URL 重写用户界面添加一个入站规则,达到同样的效果。

Cloudflare 配置

我们还可以通过以下步骤使用 Cloudflare 实现类似的重定向:

  • 登录您的 Cloudflare 账户。
  • 选择您要进行 URL 转发的域名对应的 Cloudflare 账户。
  • 点击“规则”应用,然后选择“页面规则”选项卡。
  • 在“页面规则”下,点击“创建页面规则”。这将打开一个针对您的域名的“创建页面规则”对话框。
  • 在“如果 URL 匹配”下,输入与该规则匹配的子目录 URL 模式,例如:https://example.com/subfolder。
  • 接着,点击“添加设置”,并在下拉菜单中选择“转发 URL”。
  • 点击“选择状态代码”,并选择 301(永久重定向)或 302(临时重定向)。
  • 输入根目录的目标 URL,并点击“保存并部署”以完成设置。

以上示例说明了如何将所有流量从 https://techblik.com/blog 重定向到 https://techblik.com。

总结

从以上内容可以看出,将子目录重定向或映射到根目录或其他 URL 是一项常见的任务,并且大多数流行的网络服务器都提供了多种不同的方法来支持此操作。

接下来,我们将探讨如何在单个 IP 地址上托管多个网站。

您喜欢这篇文章吗?不妨分享给其他人吧!