Directus 8前端Hello World文件部署及admin访问问题咨询
我完全懂你这种卡了好几个小时的烦躁——想在Directus 8的根域名整个简单的Hello World前端,结果要么改了根index.php就登不上Admin,要么不改的话根目录直接跳Admin,完全没地方放自己的前端。别着急,我给你一步步捋清楚怎么解决:
1. 先确认Directus Admin的基础配置
首先找到public/admin/config.php(也就是你部署Directus的admin目录下的配置文件),检查base_url的设置是否正确。它必须明确指向Admin的路径,这样Directus才不会和根目录的前端混淆:
$config['base_url'] = '/admin/';
如果原来的配置是根路径(比如/),那肯定会和你的前端冲突,改成上面的路径就对了。
2. 放心修改根目录的index.php搭建Hello World
现在你可以直接替换根目录public/index.php的内容,写你的Hello World代码了,比如:
<?php echo "<h1>Hello World!</h1>"; echo "<p>这是我的Directus 8前端页面</p>"; ?>
这时候访问mydomain.com就会显示你的Hello World,而mydomain.com/admin应该能正常加载登录表单。如果还是不行,继续看下一步。
3. 修复服务器重写规则的干扰
如果改完根index.php后Admin还是打不开,大概率是服务器的重写规则(比如Apache的.htaccess)把/admin的请求导向了根目录。检查public/.htaccess文件,调整规则让Admin路径优先被处理:
<IfModule mod_rewrite.c> RewriteEngine On # 让所有/admin开头的请求直接访问Admin目录,不被根规则干扰 RewriteRule ^admin/ - [L] # 根目录前端的路由规则(如果需要单页应用的话,不需要可以删掉下面3行) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L] </IfModule>
[L]标记表示这是最后一条规则,匹配到/admin的请求就不会再走后面的根目录规则了。
4. 确认Admin入口文件未被修改
最后检查public/admin/index.php是不是Directus自带的原始文件,别不小心把它改成了你的前端代码。这个文件是Directus Admin的入口,必须保持原样才能正常加载登录界面。
按照上面的步骤操作,你就能同时拥有根目录的Hello World前端,和正常访问的Directus Admin后台了。
内容的提问来源于stack exchange,提问作者user3525484

