如何在我的框架设置中重定向到 htaccess 文件中的 HTTPS?

How to redirect to HTTPS in htaccess file in my framework setup?

我建立了一个 php 网站,除了 http:// 版本之外,所有重定向都可以正常工作。

所以我正在尝试编辑我的主要 .htaccess 文件以防止 http:// 显示错误“不安全”,并将用户转发到 https://

我在构建我的网站时使用了一个名为 TraversyMVC 的框架,它在 public_html 目录的 .htaccess 文件中具有以下设置。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/ [L]
</IfModule>

这是我在 /public 目录中的 .htaccess 文件

<IfModule mod_rewrite.c>
  Options -Multiviews
  RewriteEngine On
  RewriteBase /public
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule  ^(.+)$ index.php?url= [QSA,L]
</IfModule>

这是我在 public_html 目录 .htaccess 文件中尝试过的方法,但它没有用:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{SERVER_PORT} 80
  RewriteCond %{REQUEST_URI} public/ [L]
  RewriteRule ^(.*)$ https://www.mywebsite.com/public/ [L]
</IfModule>

正在寻找正确的解决方案。

谢谢

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} public/ [L]
RewriteRule ^(.*)$ https://www.mywebsite.com/public/ [L]

您正在将请求重定向 before 内部重写到 /public 子目录(所以第二个 condition 检查public/ 永远不会匹配)并且 /public 不应该在您要重定向到的可见 URL 中。您还应该明确这是一个外部重定向,而不是内部重写。 (如所写,此规则将导致隐式 302 - 临时 - 重定向。)

这需要在根 .htaccess 文件中的现有规则之前。请尝试以下操作:

RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

您不需要 <IfModule> 包装器。