运行 WP 多站点,客户端可以使用自己的域名。效果很好 - 除非客户端不使用我的名称服务器,而只是有一个指向 WP 静态 IP 地址的 A 记录。
当客户端 DNS 拥有大量服务记录(例如 Office 365)时,有时会发生这种情况,将 DNS 留在那里会更安全。
当我控制 DNS 时,我可以将非 WWW 别名为 WWW,这让 WP 多站点非常高兴。当客户端仅使用 A 记录指针时,WP 多站点会处理传入的非 WWW 请求并进入多站点的注册页面。它确实需要“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
当我控制 DNS 时,我可以将非 WWW 别名为 WWW,这让 WP 多站点很高兴。
不太确定您在这里所说的“别名”是什么意思,但即使您控制 DNS,大概也需要实现某种规范的非 WWW 到 WWW 重定向?
- 这种方法看起来合理吗?
所以,这种重定向看起来是合理的。创建额外的 VirtualHost 似乎需要做更多的工作。(?)
- 考虑到我看到的问题,有没有更好的方法来处理这个问题?
正如评论中提到的,客户端可以改为设置A
记录www.example.com
,并且只能从www
子域访问该网站。但这可能是不可取的。因此,无论哪种方式,您都必须在您的终端解决域名规范化问题,这将涉及 301 重定向。
- 如果我想使这个重写通用来处理任何传入域(只要该域不包含我的基本多站点域名!) - 有人可以告诉我如何形成条件/规则吗?
在您的服务器配置中,您可以执行以下操作来处理任何域,但排除根据领域:
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.
前缀。
这里您也不需要<IfModule>
包装器。您已经知道服务器上启用了 mod_rewrite,但即便如此,<IfModule>
只有当您的网站打算在没有 mod_rewrite 的情况下“工作”时,包装器才是必需的。
答案2
您可以只添加一个单独的虚拟主机,example.com
它仅提供 301 服务,将客户端发送到www.example.com
。