如何在我的框架设置中重定向到 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>
包装器。
我建立了一个 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>
包装器。