我有 2 台具有相同版本 Apache 的 LAMP 服务器,它们都运行 Wordpress。SSL 在两台服务器上都有效(尽管测试服务器使用不同域的证书)。
在这两个上,我都有以下 .htaccess 文件(/var/www/html/.htaccess):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
测试服务器正确重定向到 HTTPS,但生产服务器根本不尝试重定向。我可以通过 HTTPS 手动浏览生产站点。
.htaccess 文件的权限为 755,由两台服务器上的 apache:apache 拥有。
为了确保测试站点上的重定向是由于 .htaccess 文件,我通过删除以下内容对其进行了更改:
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
测试站点上的重定向停止,直到我将其添加回来。
是否有一些可能已经在测试站点上完成而需要在生产环境中完成的事情?
我发现了这个问题,所以我想我在发布这个问题时是急于求成,但我会把它留在这里 - 也许它会节省一些时间。
在
/etc/httpd/conf/httpd.conf
文件中,我已将文档根目录AllowOverride
设置为None
仍在生产站点上。这是现在的样子(重定向工作):