重定向到网站的 https 版本?
Posted
技术标签:
【中文标题】重定向到网站的 https 版本?【英文标题】:Redirect to https version of the site? 【发布时间】:2021-02-17 07:49:32 【问题描述】:如何保留index.php
文件的逻辑,但从http
重定向到https
版本的网站?
我的 .htaccess
AddDefaultCharset utf8
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %SCRIPT_FILENAME !-d
RewriteCond %SCRIPT_FILENAME !-f
RewriteRule ^(.*)$ ./index.php?route=$1 [QSA,L]
</IfModule>
【问题讨论】:
【参考方案1】:您的 HTTP 到 HTTPS 重定向只需要先进行,在现有的内部重写之前。
例如:
<IfModule mod_rewrite.c>
RewriteEngine On
# HTTP to HTTPS redirect
RewriteCond %HTTPS off
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [R=301,L]
# Internal rewrite
RewriteCond %SCRIPT_FILENAME !-d
RewriteCond %SCRIPT_FILENAME !-f
RewriteRule (.*) index.php?route=$1 [QSA,L]
</IfModule>
我删除了RewriteRule
替换 字符串上的./
前缀。这不是必需的
(在这种情况下并没有真正的意义)并且会被操作系统解决。
另外,请考虑删除 <IfModule>
包装器 - 此处不需要它,除非您的代码被移植到可能未启用 mod_rewrite 的多个服务器,并且您的网站在没有它的情况下也可以正常工作(尽管这似乎不太可能)。有关此问题的更多信息,请参阅 my answer 到网站管理员堆栈上的以下问题:Is Checking For mod_write Really Necessary?
【讨论】:
以上是关于重定向到网站的 https 版本?的主要内容,如果未能解决你的问题,请参考以下文章
访问。将排除的子文件夹重定向到域的 https 版本,其他所有内容都被重定向到另一个域