如何去掉IP地址前的www

How to remove www before the IP address

我正在使用 htaccess 将我的网站从非 www 重定向到 www,

.htaccess 文件配置

Options +FollowSymLinks
Options -Indexes
RewriteEngine on
RewriteCond  !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]

所以我的域重定向到 www.website.com 而不是 website.com

但是当我使用IP地址访问网站时,问题就来了,它正在向IP地址添加www,就像这样http://www.192.168.0.0/。怎么去掉IP前面的www?

DNS

 A        @       <IP> 

CNAME     *       <www.website.com>

如果此 htaccess 规则仅用于一个站点,您可以只使用域名而不是变量。像下面这样。

RewriteEngine on
RewriteCond  !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.yoursite.com/ [R=301,L]

没有太多要解决的问题,但也很少。在这种情况下,您应该以不同的方式指定 mod 重写;您可能希望集成 {HTTP_HOST} 以进行域名检测;如果这适用于一个域,我会保留它并按原样尝试。

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

这不会重定向 IP 地址。

您可以添加条件以确保此 www 不会发生在 IP 地址:

Options +FollowSymLinks -Indexes
RewriteEngine on

RewriteCond  !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^\d{1,3\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]