Apache htaccess 将 http/www 重定向到 https/non-www

Apache htaccess 将 http/www 重定向到 https/non-www

重定向自

 - http://www.domain.com
 - http://domain.com
 - https://www.domain.com

https://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_rewriteAAA文档。

相关内容