使用SSL重定向到主域的多站点域映射

时间:2018-07-18 作者:Paschover

我使用Apache24创建了WordPress的新安装(在FreeBSD上,这不会有什么不同),比如使用maindomain.com. 我用Let’s Encrypt创建了一个SSL证书,一切正常,DNS指向我的服务器的IP。

然后,我使用子目录启用了多站点功能。我创建了另一个网站,位于https://maindomain.com/site1. 一切正常,不同的网站使用我安装和激活的两个不同主题。

我还为创建了另一个SSL证书site1.com, 并将该url的DNS指向我服务器的IP。

我已经设置了2个单独的Apache配置文件,每个虚拟主机一个,每个指向各自的SSL证书文件(位于单独的目录中)。此时,一切正常(主站点和子目录中的第二个站点)。

现在我不能site1.com 正确工作。当我转到site1的“站点管理”页面时,进入“信息”选项卡并更改Site Address (URL)site1.com, 导航到site1.com 将我重定向到maindomain.com.

我的htaccess文件是标准的:

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule . index.php [L]
我的Apache配置文件(在可用的站点中,并启用了与站点的符号链接)也是相当标准的:

<VirtualHost *:443>
  ServerName www.site1.com
  ServerAlias site1.com

  SSLEngine on
  SSLCertificateFile "/usr/local/etc/letsencrypt/live/site1.com/cert.pem"
  SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/site1.com/privkey.pem"
  SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/site1.com/fullchain.pem"

  <FilesMatch "\\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>

  BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
  CustomLog "/var/log/httpd-ssl_request.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \\"%r\\" %b"

  <Directory "/usr/local/www/apache24/data/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
  </Directory>

  ErrorLog "/var/log/site1.com.ssl-error.log"
  CustomLog "/var/log/site1.com.ssl-access_log" combined
</VirtualHost>

<VirtualHost *:80>
   ServerName www.site1.com
   ServerAlias site1.com

   Redirect permanent / https://site1.com/
</VirtualHost>

1 个回复
SO网友:Paschover

我强烈怀疑这与我需要清除缓存和cookie有关。我还非常确定,您不能使用独立生成的SSL证书。

我最终禁用了SSL everywhere,让站点正确映射到URL,生成证书(首先在手动模式下,然后在webroot模式下),然后再次启用SSL。

结束

相关推荐

Remove node from multisites?

我有一个如下所示的功能,其目标是从“我的网站”下拉列表中删除新帖子并管理评论。如果我将{$node\\u id}替换为blogs id,这会很好地工作。但我希望这适用于“我的站点”列表中的所有多站点。这意味着我需要获得所有的博客id。这是我已经取得的成就,但它不起作用。add_action( \'admin_bar_menu\', \'remove_nodes_from_mysites\', 999 ); function remove_nodes_from_mysites( $wp_admin_