如何保留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>发布于 2020-11-04 16:38:29
您的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中的Webmaster堆栈上的以下问题:Is Checking For mod_write Really Necessary?
https://stackoverflow.com/questions/64683091
复制相似问题