重定向自
- http://www.domain.com
- http://domain.com
- https://www.domain.com
我使用以下(apache)htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
这个方法可行,但我认为这不是最好的方法。前两部分仍将合并,但我不知道该怎么做。
答案1
您的用例是教科书范例何时完全避免重写规则。
要将 http URL 重定向到 https,只需执行以下操作:
<VirtualHost *:80> ServerName www.example.com Redirect "/" "https://www.example.com/" </VirtualHost> <VirtualHost *:443> ServerName www.example.com # ... SSL configuration goes here </VirtualHost>
此外:你应该完全避免使用 .htaccess 文件如果您有权访问 httpd 主服务器配置文件。使用.htaccess
文件慢下来您的 Apache http 服务器。 .htaccess 文件中包含的任何指令最好都设置在 Directory 块中,因为它可以达到相同的效果,并且性能更好。 来源: Apache 手册
更多信息请参阅mod_rewrite和AAA文档。