请审查/改善我的.htaccess非www到www重写计划

运行WP多站点,客户端可以使用自己的域名。 很好的工作 – 除了客户端不使用我的名称服务器,只是有一个指向WP静态IP地址的Alogging的情况。

当客户端DNS有大量服务logging(例如Office 365)时,有时会发生这种情况,将DNS留在那里更安全。

当我控制DNS时,我可以将非WWW别名到WWW,这使WP多站点感到高兴。 当客户端刚刚使用Alogging指针时,WP多站点在传入的非WWW请求中跳转,并落在多站点的注册页面上。 它真的需要'万维网',工作正确(不幸)。

我通过在.htaccess中这样做解决每个客户:

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com [NC] RewriteRule ^(.*) http://www.example.com/$1 [L,R=301] </IfModule> 

迄今为止似乎工作很好。

问题:

  1. 这个方法看起来是否合理?

  2. 鉴于我所看到的问题,有没有更好的方法来处理这个问题?

  3. 如果我想使这个重写通用来处理任何传入域(只要该域包括我的基地多站点域名!) – 有人可以告诉我如何形成条件/规则?

我喜欢硬编码的实际领域,因为这保证没有别的被触动,但我会想象一旦我有几百这些可能会变得愚蠢。

当我控制DNS时,我可以将非WWW别名到WWW,这使WP多站点感到高兴。

不太清楚这里的“别名”是什么意思,但是大概你需要实现某种规范的非WWW来WWWredirect,即使你控制了DNS?

  1. 这个方法看起来是否合理?

所以,这种types的redirect似乎是合理的。 创build额外的VirtualHost似乎是更多的工作。 (?)

  1. 鉴于我所看到的问题,有没有更好的方法来处理这个问题?

正如评论中提到的,客户可以在www.example.com上设置Alogging,而只能从www子域访问该站点。 但这可能是不可取的。 所以,无论哪种方式,你将不得不在你的最后解决域名规范化,这将涉及301redirect。

  1. 如果我想使这个重写通用来处理任何传入域(只要该域不包括我的基地多站点域名!) – 有人可以告诉我如何形成条件/规则?

在你的服务器configuration中,你可以做如下的事情来处理任何域,但是排除基本域:

 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} !^base-domain-to-exclude\.com [NC] RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L] 

如果HTTP_HOST不以www.开头www. 然后使用www.redirect到相同的主机 www. 前缀。

您也不需要这里的<IfModule>包装。 您已经知道在您的服务器上启用了mod_rewrite,但即使如此,只有在您的站点打算在没有mod_rewrite的情况下“工作”时,才需要<IfModule>包装器。

您可以为example.com添加一个单独的虚拟example.com ,只需将客户端发送到www.example.com