我想将www.example.com重定向到example.com。下面的htaccess代码可以做到这一点:

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

但是,有没有一种方法可以在不硬编码域名的通用方式做到这一点呢?


当前回答

Add

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

在任何其他规则之前。htaccess。

其他回答

如果你想在httpd.conf文件中这样做,你可以在没有mod_rewrite的情况下这样做(显然这样对性能更好)。

<VirtualHost *>
  ServerName www.example.com
  Redirect 301 / http://example.com/
</VirtualHost>

我在这里得到了答案:https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507

对于那些需要能够访问整个网站没有'www'前缀。

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

请务必将此添加到下面的文件中

/site/location/.htaccess 

试试这个:

RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ %{HTTP_HOST}$1 [C]
RewriteRule ^www\.(.*)$ http://$1 [L,R=301]

如果主机以www开头,我们将整个主机粘贴到URL的开头,然后去掉“www”。

WWW到非WWW使用HTTPS

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

我发现,有很多关于htaccess重定向的错误信息。首先,如果您希望这段代码能够工作,请确保您的站点运行在使用Apache的Unix上,而不是运行在Windows主机上。

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

(但是要确保每行文本之间没有空格;我已经在行之间添加了一个额外的空间,所以它在这个窗口中呈现正常。)

这是一个代码片段,可用于将网站的www版本引导到http://版本。也可以使用其他类似的代码。