安装thinkphp5 参考这里: https://whycan.cn/t_3445.html#p34444
安装好 thinkphp5 之后, 发现一定要用这个网址访问:
http://localhost/index.php/index/index/index
可是我记得以前可以用这个地址访问:
http://localhost/index/index/index
离线
后来找到官方文档: https://www.kancloud.cn/manual/thinkphp5/177576
1. 先执行: a2enmod rewrite
2. AllowOverride None 改为 AllowOverride All
<Directory /var/www/html>
AllowOverride All
</Directory>
3. 把下面的内容保存为.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>
现在可以了.
离线
居然搜到了关于上面 .htaccess 重写脚本的解释: https://segmentfault.com/q/1010000009402187
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
1、排除一些条件,必须两个条件都满足后才重定向到index.php
//如果你访问的文件不等于目录
RewriteCond %{REQUEST_FILENAME} !-d
//如果你访问不是文件,比如你可能访问的JPEG等图片文件
RewriteCond %{REQUEST_FILENAME} !-f
2、^(.*)$ 匹配所有的路径映射到入口文件 index.php/$1
3、标签 [QSA,PT,L] QSA:表示保留参数如get传值?xxx==xx...; PT:再把这个URL交给Apache处理;L:作为最后一条;
PT和L可加可不加。
离线
搞定一个简单的重写:
http://localhost/t_1122.html
<===>
http://localhost/index.php/index/index/index/viewtopic/1122
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^t_(\d+).html$ index.php/index/index/viewtopic/id/$1 [QSA,PT,L]
</IfModule>
application/index/controller/Index.php:
<?php
namespace app\index\controller;
class Index
{
public function viewtopic($id = 100)
{
return 'hello: ' . $id;
}
}
离线
离线