我在谷歌云计算引擎中部署了我的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。当我从自定义永久链接切换到简单永久链接时,页面可以再次访问。你知道是什么导致了这个问题吗?
最合适的回答,由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无法自行确定或者,强制您的整个域使用https,并在.htaccess
:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]