在学习thinkphp5的时候,大家遇到过必须要使用http://localhost/public/ 这样才能访问网站,研究了很久之后,下面写下笔记,分享给大家,希望大家在学习过程中一起共同进步,少走弯路
第一种方法:把public作为根目录(最简单的)
第二种方法:我把入库文件迁移到根目录,即在根目录创建index.php,里面配置信息如下:
<?php
// 定义应用目录
define('APP_PATH', __DIR__ . './application/');
// 加载框架引导文件
require __DIR__ . './thinkphp/start.php';
这样就完成了隐藏public目录和index.php文件,做到这一步,我们即可隐藏public目录。
如何要隐藏index.php,需要开启伪静态,我是iis,直接在根目录创建web.config,里面的重写代码跟tp3一样,如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="已导入的规则 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
这样就OK了,如何使Apache服务器的话,直接在根目录创建.htaccess,里面的重写代码跟tp3一样:
<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>