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

我将我的网站放在子文件夹下,然后决定将其移至域名的根目录。

主要的挑战是在重定向URL到域名的根目录或其他位置的同时保持所有文章在子文件夹中的相同路径。

Apache

Apache HTTP服务器支持RewriteCond。要进行此更改,请编辑您的.htaccesshttpd.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;
}

在这里,^~修饰符确保如果您将来要添加任何regex位置,此前缀位置仍然具有优先权。

IIS

在IIS中,我们可以使用Rewrite模块来重写在子文件夹中的URL,使其看起来好像它们在根目录中一样。您可以在您的Web根文件夹(%SystemDrive%inetpubwwwroot)中编辑您的web.config文件,例如:



    
        
            
                
                    
                    
                
            
        
    

或者,您还可以在IIS Manager中使用URL Rewrite UI添加入站规则。

Cloudflare

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

  • 登录您的Cloudflare帐户。
  • 点击相应的Cloudflare帐户,选择您要添加URL转发的域。
  • 点击Rules应用程序,然后点击Page Rules选项卡。
  • 在Page Rules下,点击创建Page Rule。创建Page Rule对话框将为您的域名打开。
  • 现在,在如果URL匹配下,输入应该匹配规则的子文件夹的URL模式,如https://example.com/subfolder
  • 接下来,点击添加设置并选择转发URL从下拉菜单中选择。
  • 点击选择状态代码并选择301(永久重定向)或302(临时重定向)。
  • 输入您的根域名的目标URL,然后点击保存和部署以完成。

上面的示例是将https://yaoweibin.cn/blog中的所有内容重定向到https://yaoweibin.cn

总结

如您所见,将子文件夹重定向或映射到根目录或其他URL是一项常见任务,并且受到大多数流行浏览器的支持,并具有不同的选项。

接下来,了解如何托管multiple websites on a single IP

类似文章