.htaccess 将非https和非www重定向到https://www 支持通配符

.htaccess 将非https和非www重定向到https://www 支持通配符,.htaccess,redirect,.htaccess,Redirect,我能做到以下几点 https://domain.com -> https://www.domain.com http://www.domain.com -> https://www.domain.com http://domain.com -> https://www.domain.com 一切都很好…但除此之外,我希望通配符能起作用 https://domain.com/randomblabla.html -> https://www.domain.com/rando

我能做到以下几点

https://domain.com -> https://www.domain.com
http://www.domain.com -> https://www.domain.com
http://domain.com -> https://www.domain.com
一切都很好…但除此之外,我希望通配符能起作用

https://domain.com/randomblabla.html -> https://www.domain.com/randomblabla.html
其中randomblabla.html不存在…它只显示index.php的内容…在我设置https重定向之前,它工作正常..但现在它重定向到
https://www.domain.com/index.php

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (.*)(\/?)$ index.php [QSA,NC,L]



RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=301,L,NE]

# Remove Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L,NE]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

问题是前端控制器的冗余存在,就像顶部的规则一样。请尝试以下代码:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=301,L,NE]

# Remove Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L,NE]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

确保在新浏览器中进行测试,以避免旧的301缓存。

我尝试了新浏览器、新电脑、清除缓存。检查