You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.htaccess中重定向非www到www引发内部服务器错误

嘿,我之前也碰到过一模一样的问题!500内部服务器错误大概率是重定向规则的语法出错,或者服务器配置没到位导致的,咱们一步步来排查解决:

Apache服务器(.htaccess配置)

这是最常见的场景,先从这里排查:

  • 替换成正确的重写规则:很多人写错规则导致报错,你试试这个标准的非www转www配置,把它放到网站根目录的.htaccess文件里:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]

简单解释下:RewriteCond用来匹配所有不以www.开头的域名([NC]表示不区分大小写),RewriteRule则把请求永久重定向到带www的地址,R=301对SEO友好,[L]表示这是最后一条规则,避免后续规则干扰。

  • 确认mod_rewrite模块已开启:如果Apache没开重写模块,规则不仅不生效还会报错。自己搭的服务器可以用sudo a2enmod rewrite开启,然后重启Apache:sudo systemctl restart apache2;虚拟主机的话直接联系主机商确认是否开启该模块。
  • 检查.htaccess权限:文件权限不对也会触发500错误,一般把.htaccess权限设为644,所在目录权限设为755就可以了。
Nginx服务器

如果用的是Nginx,规则写法和Apache完全不同,别搞混了:

  • 修改Nginx配置文件:找到你的网站配置(一般在/etc/nginx/sites-available/目录下),添加一个专门处理非www域名的server块:
server {
    listen 80;
    listen [::]:80;
    server_name yourdomain.com; # 替换成你的实际域名
    return 301 https://www.yourdomain.com$request_uri;
}

server {
    listen 80;
    listen [::]:80;
    server_name www.yourdomain.com;
    # 这里放你正常的网站配置,比如根目录、反向代理等
}

如果配置了HTTPS,记得在443端口的server块也做对应的重定向。修改完后一定要测试配置语法:nginx -t,没问题的话重启Nginx:sudo systemctl restart nginx。

快速定位问题的小技巧
  • 查看服务器错误日志:500错误的具体原因都会记录在日志里,Apache日志一般在/var/log/apache2/error.log,Nginx日志在/var/log/nginx/error.log,打开看看就能知道是语法错误、模块未加载还是权限问题,直接精准修复。
  • 测试配置语法:Apache用apache2ctl configtest,Nginx用nginx -t,这两个命令能帮你提前发现配置里的语法错误,不用一次次刷新页面试错。

内容的提问来源于stack exchange,提问作者Masyaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:20:45