创建基于域的正则表达式重定向

时间:2019-01-25 07:58:24

标签: .htaccess redirect

我运行使用域映射的Wordpress Multisite。所有域都指向admin.com上的同一Wordpress安装。它们共享相同的.htaccess文件。

但是,以我的基本.htaccess知识,我无法设法构成导致以下结果的重定向:

site1.com/admin > site1.admin.com/app
site2.net/admin > site2.admin.com/app
site3.fr/admin > site3.admin.com/app

以此类推。

可以在重定向中使用正则表达式来完成此操作吗?任何帮助深表感谢!

1 个答案:

答案 0 :(得分:0)

当然可以。实际上,它并不完全复杂,您可以为每种情况实施一条规则:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^site1\.com$
RewriteRule ^/?admin$ https://site1.admin.com/app [R=301]

RewriteCond %{HTTP_HOST} ^site2\.net$
RewriteRule ^/?admin$ https://site2.admin.com/app [R=301]

RewriteCond %{HTTP_HOST} ^site3\.fr$
RewriteRule ^/?admin https://site3.admin.com/app [R=301]

此规则集将在http服务器主机配置或动态配置文件(“ .htaccess”文件)中同样起作用。显然,重写模块需要加载到http服务器内部,并且如果您使用动态配置文件,则需要注意在主机配置中启用了它的解释功能,并且该解释模块位于主机的DOCUMENT_ROOT中夹。

由于没有为此定义映射功能,因此我看不到实现处理所有情况的单个规则的方法。您很可能需要根据实际情况调整站点名称(实际上您确实在使用域admin.com ...),但是上述规则应该为您提供工作地点的基本指导。

这里没有什么复杂的,所有这些都已记录在案,并在apache文档中以简单实用的示例进行了显示。如果您有关于重写的疑问,那么您真的应该开始研究。

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。