前言:当我们下载composer并且利用它安装了 thinkphp 6,我们就可以直接通过 php think run来调用 localhost:8000 / 127.0.0.1:8000 端口,来访问网站;此时该端口访问的文件就位于public/index.php ;那么如何将网站用phpstudy_pro 来设置随意的端口来 访问,并且可以访问其他控制器?以Web服务器软件Apache,开放localhost:80为例(默认80不用写)
问题现象:
在vscode的控制器中进入我们的项目输入 php think run 我们可以通过url路径:localhost:8000;
localhost:8000/index 直接访问我们网站,并且 可以访问其他控制器 localhost:8000/user
通过phpstudy_pro 来设置的端口来访问可以通过url路径:localhost;localhost/index 直接访问我们网站,但是访问其他控制器要输入localhost/index.php/user
图片如下:( 通过vscode 在控制台输入 php think run )
1、访问index控制器
2、访问user控制器
图片如下:( 通过phpstudy_pro 配置的端口 )
1、访问index控制器
2、访问user控制器(不能通过loclhost/user方式访问;只能通过loclhost/index.php/user访问)
解决方法
第一步:找到Apache的配置文件httpd.conf用记事本打开,找到(可以用ctrl+f快速查找)LoadModule rewrite_module modules/mod_rewrite.so 将#去除(好像默认去除了的,不太清楚)
第二步:还是在httpd.conf文件内搜索 AllowOverride 关键词 将AllowOverride none 改成 AllowOverride all, 一共要改3个
第三步:在应用入口文件( public/index.php)同级目录下修改 .htaccess 文件(没有文件自己加)
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
修改后就大功告成了,可以直接通过 localhost/user ,访问到其他控制器了
以上的操作都在thinkphp 6.0的文档有,在目录 架构-->url访问-->隐藏入口文件
但是 thinkphp6.0的文档 .htaccess 文件 的代码是错的,我这里的代码才是正常的,也是找了很久