为什么要配伪静态
不配的话地址是 ?m=index&a=index 这种动态形式,既难看又不利于收录。配好后变成 /vod/detail/id/123.html。
Nginx 规则
宝塔 → 网站设置 → 伪静态,下拉选「苹果CMS」;没有就手动粘贴下面的规则:
location / {
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
rewrite ^/api.php(.*)$ /api.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
if (!-e $request_filename) 这个判断一定不能少。它的作用是「请求的是真实存在的静态文件就直接返回」。少了它,图片、CSS、JS 全会被重写到 PHP 入口,页面样式直接崩掉。
Apache 规则
Apache 用根目录的 .htaccess,确认 mod_rewrite 已开启、AllowOverride 设为 All:
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
配完 404 怎么排查
- 改完一定要清缓存并重新生成链接。后台 → 清理数据 → 清缓存,否则页面里还残留旧格式地址,新旧混用。
- 宝塔选了「苹果CMS」还 404:手动粘贴上面的完整规则,保存后重载 Nginx。
- 规则顺序要「从具体到宽泛」,越具体的越往前放。带 page 的规则要放在不带 page 的后面,否则会被前面的拦截。
- 后台 URL 模式也要同步切成「伪静态」,只改服务器规则不改后台是不生效的。