404在通过HTTPS提供服务时的固定链接

时间:2019-04-29 作者:UpCat

我在谷歌云计算引擎中部署了我的wordpress站点。要启用SSL,我遵循此处概述的步骤https://www.onepagezen.com/free-ssl-certificate-wordpress-google-cloud-click-to-deploy

安装Certbot客户端生成证书配置证书启用HTTPS重定向重新启动Apache服务器更新WordPress URL/etc/apache2/sites-available/default-ssl.conf

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        <Directory /var/www/html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all
            Require all granted
        </Directory> 
    ...
以及/etc/apache2/sites-available/wordpress.conf

<VirtualHost *:80>

  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html
  ServerName mydomain.com
  ServerAlias mydomain.com
  Redirect permanent / https..mydomain.com

  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>

  <Directory /var/www/html/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
设置完所有内容后,我运行:

sudo a2ensite default-ssl
sudo a2enmod ssl
sudo service apache2 restart
SSL在后端和登录页上运行良好。然而,对于所有其他页面,我得到了404。当我从自定义永久链接切换到简单永久链接时,页面可以再次访问。你知道是什么导致了这个问题吗?

2 个回复
最合适的回答,由SO网友:cjbj 整理而成

这是一个很常见的问题。不幸的是,有几十种可能的原因,可能在服务器级别和WordPress级别。因此,不可能为您找到解决方案。

您知道的一件事是,您提到的服务器设置至少在一定程度上工作正常,从他们阅读WordPress的角度来看.htaccess 文件,因为这是存储永久链接重定向的位置。尽管如此,如果在轨道的某个地方有一个重定向到http, 然后服务器可能会拒绝服务(this seems to be a problem with Google\'s service).

任何与服务器相关的问题在这里都是无关紧要的,但在WordPress级别,您可以尝试以下几点:

禁用所有插件(SSL插件除外)并重新保存永久链接。这确保没有插件重定向到http,确保没有.htaccess 子目录中的文件无意中重定向到http$_SERVER[\'HTTPS\']=\'on\'; 到您的config.php 文件,告诉WordPress应该为所有页面提供https. 有时服务器设置非常复杂,WordPress无法自行确定.htaccess:

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

SO网友:twelvell

如果您有负载平衡器,请尝试在wp config中添加以下行。php

$_SERVER[\'HTTPS\']=\'on\';