我想将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]
但是,有没有一种方法可以在不硬编码域名的通用方式做到这一点呢?
当前回答
对于那些需要能够访问整个网站没有'www'前缀。
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
请务必将此添加到下面的文件中
/site/location/.htaccess
其他回答
更新后可以在Apache 2.4上工作:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
与Michael的唯一变化是删除[NC],这会产生“AH00665”错误:
不支持非正则表达式模式“-f”的NoCase选项,将被忽略
我使用上面的规则将www转发到no www,它在主页上工作得很好,但是在内页上他们转发到/index.php
我在我的.htaccess文件中发现了另一个规则,这导致了这个问题,但不知道该怎么做。任何建议都很好:
############################################
## always send 404 on missing files in these folders
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
############################################
## never rewrite for existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
############################################
## rewrite everything else to index.php
RewriteRule .* index.php [L]
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://版本。也可以使用其他类似的代码。
使用。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>