海洋 CMS 可以安装在子目录里面吗
可以,海洋CMS 完全支持安装在子目录(例如 http://你的域名/sea/)下运行,不需要改动源码;但必须处理两件事:伪静态规则里的目录前缀,以及主站与子目录站之间的 session 冲突。这两点没做对,就会出现"首页能开、内页 404"或"登录后台后主站掉线"的典型故障。
海洋CMS 怎么安装到子目录里?分三步
结论:把整包解压上传到子目录,用"子目录 + /install/index.php"访问安装向导,安装时把站点地址写成带子目录的完整 URL 即可。
- 上传:在网站根目录下新建目录,例如
sea,把海洋CMS 程序包解压后的全部文件放进/www/wwwroot/你的域名/sea/。注意不要把压缩包内层目录整个再套一层,否则访问路径会变成/sea/upload/install/这种别扭结构。 - 安装:浏览器打开
http://你的域名/sea/install/index.php,按向导填数据库地址、库名、用户名、密码和管理员账号。数据库建议和主站分开建库,或者至少给海洋CMS 单独的表前缀(如sea_),避免和主站表名撞车。 - 收尾:安装完成后按提示删除
install目录(这是海洋CMS 官方的安全要求),并把默认后台目录admin改成自定义名字,后台地址就变成http://你的域名/sea/自定义目录/。
子目录安装后伪静态规则要怎么改?
结论:伪静态规则必须加上子目录前缀,Apache 靠 RewriteBase,Nginx 靠 location 块,两者都改错就会内页 404。
Apache 环境:把海洋CMS 官方提供的 .htaccess 放在 sea 目录里,并在 RewriteEngine On 下面加一行
RewriteBase /sea/
Nginx 环境:把规则包在 location 里,示例:
location /sea/ {
if (!-e $request_filename) {
rewrite ^/sea/(.*)$ /sea/index.php?s=$1 last;
}
}
改完 nginx -t 测试语法,再 nginx -s reload。判断是否生效很简单:点开任意一个分类页或详情页,如果 URL 是 .html 结尾(或你设置的伪静态后缀)且能正常打开,就说明规则对了;如果点进去跳成 index.php?s=/xxx,说明规则没匹配上。
子目录安装最容易踩的坑有哪些?
结论:最大的坑是 session 冲突和路径写死,其次是后台入口被扫。
- session 冲突:主站和子目录站默认都用
PHPSESSID,且 cookie 作用域是/,两边会互相覆盖登录状态。解决办法是给海洋CMS 单独设session.name(在php.ini或站点 vhost 里用php_value session.name SEASID),或把session.cookie_path设为/sea。 - 路径写死:如果之前在根目录跑过、现在搬到子目录,数据库里凡是存了旧站点地址的配置项都要同步改成带子目录的新地址,否则封面图、播放器、采集接口可能仍指向根目录。
- 后台入口:子目录安装后后台地址变长,很多人嫌麻烦就不改目录名,结果被扫描器批量爆破。改目录名是成本最低的一步。
- 域名还是子目录:从 SEO 和 cookie 隔离角度看,独立子域名 + 独立建站通常更干净;如果只是临时放一个测试站、或者主站已经很重不想再开新站,子目录最省事。
总结一句:海洋CMS 子目录安装可行,核心是把 RewriteBase /sea/ 或 Nginx 的 location /sea/ 写对、把 session 名字隔离、把 install 目录删掉、后台目录改名。这四步做完,子目录站和主站可以长期共存互不干扰。
原文链接:https://www.gj0.com/thread-435.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。