.htaccess 重定向代码重定向到未找到的自定义 404,而不是将 www 定向到非 www 版本

.htaccess redirect code redirects to custom 404 not found instead of directing for www to non-www version

我正在使用这个重定向代码

# Redirect www urls to non-www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.8mags\.com [NC]
RewriteRule (.*) http://8mags.com/ [R=301,L] 

这会将我重定向到我创建的自定义 404 页面。这是我从 http://htaccess.madewithlove.be/

获得的一些额外信息
0       # Redirect www urls to non-www  
1       RewriteEngine on    
2       RewriteCond %{HTTP_HOST} ^www\.8mags\.com [NC]  This condition was met
3       RewriteRule (.*) http://8mags.com/ [R=301,L]  This rule was met, the new url is http://8mags.com/ The tests are stopped, using a different host will cause a redirect

我不明白最后一行是什么意思以及如何更正问题?

我 运行 对你的 URL http://www.8mags.com/lessons/ 进行了快速测试,它被重定向到: http://8mags.com/8mags/lessons/ 而不是 http://8mags.com/lessons/。这意味着您在 /8mags/ 子目录而不是 DocuemtnRoot.

中保留了上述规则

如果 /8mags/ 是您的 DocumentRoot.

,则将上述规则移动到父目录

您也可以使用 %{REQUEST_URI}:

修复它
# Redirect www urls to non-www
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.8mags\.com [NC]
RewriteRule ^ http://8mags.com%{REQUEST_URI} [R=301,L,NE]