如何使用 .htaccess 在没有硬编码的情况下将非 www 重定向到 www?

5 rewrite .htaccess 301-redirect apache-2.2

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

...导致从“www 到非 www”的完美的非硬编码 301 重定向,完全相反的情况会是什么样子?

编辑:

根据 Prix 的帖子,我已将.htaccess文件更改为以下内容:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

如前所述,http://www./不幸的是,这重定向到。谁能帮忙?

Mar*_*ner 3

普利克斯差点就获得了。当您否定RewriteCond(with !) 时,它不会捕获,因此%1为空。两种可能的解决方案:

假的RewriteCond

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(.+)$ [NC]
RewriteRule ^/(.*)$ http://www\.%1/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

%{HTTP_HOST}RewriteRule

RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteRule ^/(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)