.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缓存。我尝试了新浏览器、新电脑、清除缓存。检查