我想将www.example.com重定向到example.com。下面的htaccess代码可以做到这一点:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
但是,有没有一种方法可以在不硬编码域名的通用方式做到这一点呢?
我想将www.example.com重定向到example.com。下面的htaccess代码可以做到这一点:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
但是,有没有一种方法可以在不硬编码域名的通用方式做到这一点呢?
当前回答
更新后可以在Apache 2.4上工作:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
与Michael的唯一变化是删除[NC],这会产生“AH00665”错误:
不支持非正则表达式模式“-f”的NoCase选项,将被忽略
其他回答
对于那些需要能够访问整个网站没有'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”。
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/(.*)$ https://%1/$1 [R]
RewriteCond捕获www后HTTP_HOST变量中的所有内容。并将其保存在%1中。
RewriteRule捕获了没有/开头的URL,并将其保存在$1中。
更新后可以在Apache 2.4上工作:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
与Michael的唯一变化是删除[NC],这会产生“AH00665”错误:
不支持非正则表达式模式“-f”的NoCase选项,将被忽略
使用。htaccess重定向到www或非www:
只需将以下代码行放入您的主根.htaccess文件中。 在这两种情况下,只需将domain.com更改为您自己的主机名。
重定向到www
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.tld [NC]
RewriteRule ^(.*)$ http://www.domain.tld/$1 [L,R=301]
</IfModule>
重定向到非www
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domain\.tld [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [L,R=301]
</IfModule>