3

我正在尝试使用.htaccess将所有流量发送到https. 我正在使用此答案中的示例:需要将所有流量重定向到 https

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

这不会为我重定向任何东西。我把它放进去,var/www但它似乎没有任何效果。我做错了什么?

4

2 回答 2

4

在重写规则的末尾尝试 [R,L]:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

R 重定向到提供的链接,如果满足条件,L 会中断流程。作为参考,您可以看到:

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

于 2013-08-15T16:10:49.573 回答
3

如果这是您在 htaccess 文件中拥有的唯一规则并且它在您的文档根目录中,那么您需要检查一些事情,因为规则很好。

  1. 确保 mod_rewrite 已加载。您的文件中应该有一行httpd.conf类似于:

    LoadModule rewrite_module modules/mod_rewrite.so
    

    确保它未注释。

  2. 确保允许您的 htaccess 文件所在的目录(应该是您的文档根目录)通过 htaccess 覆盖服务器设置。在您的虚拟主机或服务器配置中,应该有类似的内容

    <Directory "/var/www/">
        AllowOverride All
    
        ... (some other stuff)
    </Directory>
    

    确保AllowOverride至少是FileInfo

  3. 确保您的文档根目录实际上是您的 htaccess 文件所在的位置。您的虚拟主机配置应该有如下一行:

    DocumentRoot /var/www/
    
  4. 确保文档根目录适用于正确的虚拟主机。如果 SSL 和非 SSL 有单独的虚拟主机,请确保 htaccess 文件位于非 SSL 虚拟主机的文档根目录中

于 2013-08-15T05:21:32.640 回答