如何通过 mod_rewrite 重定向删除 'www'?

How to remove 'www' via a mod_rewrite redirection?

我想重定向 https://www.example.com to https://example.com. I followed this answer 但它不起作用。顺便说一句,ErrorDocument 404 也不起作用。

我必须做什么?这是我的文件:

<IfModule mod_rewrite.c>
RewriteEngine on  
RewriteBase /

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

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/ [R=301,L]
AddType application/x-httpd-php html 

ErrorDocument 404 https://kocer.org/index.php?p=notfound
</IfModule>

你可以使用这个:

<IfModule mod_rewrite.c>
    RewriteEngine on  
    RewriteBase /

    RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC]
    RewriteRule ^ http%2://%1%{REQUEST_URI} [NE,L,R=301]
</IfModule>
AddType application/x-httpd-php html 
ErrorDocument 404 /index.php?p=notfound

ErrorDocument Directive
请注意,当您指定一个指向远程 URL 的 ErrorDocument 时(即任何在其前面带有诸如 http 的方法),Apache HTTP Server 将向客户端发送重定向以告诉它在哪里可以找到文档,即使文档最终位于同一台服务器上。这有几个含义,最重要的是客户端不会收到原始错误状态代码,而是会收到重定向状态代码。这反过来会混淆网络机器人和其他尝试使用状态代码确定 URL 是否有效的客户端。