.htaccess 中的 LAMP 服务器 HTTP->HTTPS 重定向

.htaccess 中的 LAMP 服务器 HTTP->HTTPS 重定向

我有 2 台 LAMP 服务器,它们都使用相同版本的 Apache,并且都运行 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]

测试站点上的重定向停止了,直到我将其重新添加。

在测试站点上完成的事情是否需要在生产中完成?

答案1

我发现了这个问题,所以我想我抢先提出了这个问题,但我会把它留在这里 - 也许它可以为某人节省一些时间。

/etc/httpd/conf/httpd.conf文件中,我已将AllowOverride文档None根目录设置为仍在生产站点上。
现在它看起来是这样的(重定向工作正常):

<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

相关内容