路径规则不对,把public目录下的.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>
因为你apache定义的服务器根目录不是在thinkphp的public目录下,检查一下这个问题
隐藏入口文件是叫url看起来更好看 对seo优化有好处
1、httpd.conf
配置文件中加载了mod_rewrite.so
模块
2、AllowOverride None
将None
改为 All
3、在应用入口文件同级目录添加.htaccess
文件,内容如下:
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]//---------------此处与官网不同;
因为ThinkPHP5.1多了一个facadel类
门面(Facade)为容器中的类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。
系统已经为大部分核心类库定义了Facade,所以你可以通过Facade来访问这些系统类,当然也可以为你的应用类库添加静态代理。
只要这个类库继承think\Facade,就可以使用静态方式调用动态类app\common\Test的动态方法,例如上面的代码就可以改成:
// 无需进行实例化 直接以静态方法方式调用hello echo \app\facade\Test::hello('thinkphp');
结果也会输出 hello,thinkphp。
说的直白一点,Facade功能可以让类无需实例化而直接进行静态方式调用。
参考网址http://www.php.cn/manual/view/32830.html,ThinkPHP5.1核心Facade类库相关
将public下index.php和.htaccess文件移动到站点根目录,修改相对路径形式如:define('APP_PATH', __DIR__ . '/../app/')->define('APP_PATH', __DIR__ . '/./app/')即可;
没什么不同,你就当作在你访问的时候如:localhost/admin/index/index 会自动补上 index.php 入口文件而已 也就是说你最终访问的还是localhost/index.php/admin/index/index,因为在apache的重写规则中就写明了重写到index.php 这样就简化了路由。至于你为什么会这样 ,不清楚。我这里是没问题的
设置网站要目录这 public
我已找到问题,我用的是wampserver集成环境,httpd.conf中原本有
<Directory />
AllowOverride none
Require all denied
</Directory>
不管怎么配置都不行,我先将它注释掉,然后再重启一下后,日志中报错
E:/ThinkPHPstudy/.htaccess: <IfModule not allowed here 这个时候才看到.htaccess不知道怎么放到了根目录下了,移动到public文件夹下时才好的
https://blog.csdn.net/nookl/article/details/80039996 是因为TP5的自带htt文件有问题
路由机制不一样了,该配置文件吧
你这个问题太笼统,Nginx配置什么?负载均衡还是虚拟主机。
IIS7及以上 安装 安装url 重写组件
站点配置url重写----->直接导入public下.htaccess,即可在public目录下生产web.config。改一吓rule的name,这个时候name是中文的。
indez.php?/$1改成这样,不行你过来砍我