我有一个用于 www.example.com 的 SSL,以及一堆别名域(例如 mydomain.co.uk、otherdomain.com 等)停放在 cPanel 帐户上。
我想做的是强制使用 https://www.example.com对于所有请求。域之后的任何内容都应按原样附加(稍后在 .htaccess 中也会为 SEO 友好的 URL 重写)。
例如:-
http://example.com/page/2/
https://example.com/page/2/
http://www.otherdomain.com/page/2/
http://mydomain.co.uk/page/2/
都应该变成
https://www.example.com/page/2/
这几乎可以工作:-
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
但是能一下子搞定吗?此外,上面再次将查询字符串附加到 URL,例如:-
http://www.example.com/page/2/
结束为:-
https://www.example.com/page.php/2/?2/
搜索引擎友好的 SEO 部分是:-
Options +SymlinksIfOwnerMatch +MultiViews
RewriteRule ^(.*).php/(.*) $1.php?$2
应该保持不变。
IIRC,在我强制使用 SSL 之前,仅 www.example.com 的强制工作正常:-
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http%2://www.example.com/$1 [R=301,L]
非常感谢任何帮助!
最佳答案
要在单个重定向中强制使用 www 和 https,您可以使用以下规则:
RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,NE,R]
关于apache - .htaccess - 强制使用单域和 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41984285/