小皮面板怎么设置网站301重定向
学完这篇,你能在小皮面板(phpStudy 面板)里给自己的网站配好 301 重定向,把旧域名、不带 www 的地址统一跳到新地址上。整个过程不用改一行 PHP 代码,改的是站点配置文件。
第一步:确认环境和面板版本
这一步要搞清楚你用的是什么环境,因为小皮面板分 Windows 版和 Linux 版,改配置的位置不一样。
打开小皮面板客户端,左上角或「关于」里能看到版本号,目前常见的是 Windows 版 8.x 和 Linux 版(phpStudy for Linux / 小皮面板 Linux 版)。本文以 Windows 版 phpStudy 8.1 + Apache 2.4.39 + PHP 7.4 为例,Nginx 用户看第五步。
在面板首页点「网站」菜单,找到你要做重定向的那个站点,记下它的域名和根目录路径,比如 D:\phpstudy_pro\WWW\example.com。
注意:301 是永久重定向,浏览器会缓存。调试阶段建议先用 302(临时重定向)验证,确认无误后再改成 301,否则浏览器记住旧规则会很难受。
第二步:找到站点的配置文件
这一步要打开对应站点的 vhost 配置文件。在「网站」列表里,站点右侧有一列操作按钮,点「管理」→「打开配置文件」,或用面板右上角的「设置」→「配置文件」→ 找到 vhosts 目录,文件通常叫 example.com_80.conf。
文件一般长这样:
<VirtualHost *:80>
DocumentRoot "D:\phpstudy_pro\WWW\example.com"
ServerName example.com
ServerAlias www.example.com
...
</VirtualHost>
第三步:写 Apache 的 301 跳转规则
这一步把跳转代码写进 <VirtualHost> 标签内部,写完保存。
场景一:不带 www 跳到带 www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com$1 [R=301,L]
场景二:整站换域名(旧站 example.com 全跳新站 newsite.com)
RewriteEngine On
RewriteRule ^(.*)$ https://www.newsite.com/$1 [R=301,L]
场景三:只跳单个页面
Redirect 301 /old-page.html https://www.example.com/new-page.html
参数说明:R=301 是永久跳转,L 表示匹配后停止后续规则,[NC] 表示忽略大小写,$1 代表原路径。
注意:
RewriteRule的写法必须开启mod_rewrite模块。phpStudy 默认已开启;如果报 500 错误,打开 phpstudy_pro\Extensions\Apache2.4.39\conf\httpd.conf,确认LoadModule rewrite_module modules/mod_rewrite.so前面没有#。
第四步:重启 Apache 生效
这一步让配置生效。回到小皮面板首页,在「软件管理」或首页的 Apache 那一行点「重启」,也可以点「停止」再点「启动」。重启后打开浏览器,用无痕窗口访问旧地址,按 F12 看 Network 面板,状态码显示 301 且 Location 指向新地址,就成功了。
注意:不要只在面板里点「保存」就以为完事,Apache 改 vhost 必须重启服务才读取新配置。
第五步:如果你用的是 Nginx
Nginx 环境改的是站点配置里的 server 块,加一行:
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
改完同样在面板里重启 Nginx。Nginx 的 return 301 比 rewrite 效率更高,能不用 rewrite 就不用。
第六步:常见问题排查
访问后提示「重定向次数过多」:说明跳转形成了死循环,检查目标地址是不是又被另一条规则跳回来了,比如 www 跳非 www、非 www 又跳 www。
跳转不生效:清浏览器缓存或用无痕窗口;确认 ServerName 和 ServerAlias 里的域名和你访问的域名一致,否则请求根本进不到这个 vhost。
想带参数跳转:Apache 用 $1 或 %{QUERY_STRING},Nginx 用 $request_uri,否则 ?id=123 这类参数会丢。
小结
- 301 重定向改的是站点的 vhost 配置文件,不是 PHP 代码
- Apache 用
RewriteRule ... [R=301,L],Nginx 用return 301 - 改完必须重启对应的 Web 服务(Apache 或 Nginx)
- 调试期先用 302,确认无误再换 301,避免浏览器缓存干扰
- 出现「重定向次数过多」基本都是规则互相跳造成的死循环
原文链接:https://www.gj0.com/thread-1167.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。