thinkphp5如何将public隐藏掉

将index.php放入根目录,设置了相对路径,但是就只有主页控制器默认方法能用,其他的方法都用不了,不存在

阅读 12.8k
8 个回答
一般直接是把根目录指到public下啊

thinkphp5 应该是把 网站根目录 配置在 public下面吧
另外 其它方法访问不了 是不是 pathinfo 没开的原因

补充楼上隐藏public,如果是apache,请在httpd.conf配置中打开重写功能

#LoadModule rewrite_module modules/mod_rewrite.so
#去除上一行的#符号

然后再网站根目录/或者自己配置的应用目录下添加.htaccess文件,文件重写规则

<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

具体的修改方案在某度上搜索很多,TP的官方的文档也有说明

你们的方法太复杂了。nginx中配置root /path/project/public/即可。指向public下面。

新手上路,请多包涵

这个thinkphp5官方有详细文档的,如果你的服务器是apache,就相对简单些,如果是nginx,需要在nginx的配置文件里设置对你那个项目的重写,以达到隐藏index.php的目的,官方配置

如果index.php不是放在public,而是否放在项目根目录,
1、首先将站点的绑定到项目根目录
2、在根目录创建index.php

<?php

// [ 应用入口文件 ]
// 定义应用目录
define('APP_PATH', __DIR__ . '/application/');
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';

正常的访问地址是:

http://域名/index.php/module/controller/action

3、如果需要在url访问的时候隐藏index.php
需要做重写规则,以nginx为例

location / {
    if (!-e $request_filename) {
        rewrite  ^(.*)$  /index.php?s=/$1  last;
        break;
    }
 }

访问地址变成:

http://域名/module/controller/action

把public中的index.php放到根目录下 然后改成这样就可以不用public访问了
clipboard.png

新手上路,请多包涵

root 直接指到public目录下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题