手头维护的一个论坛上了个新系统是用 ThinkPHP 写的。装上以后发现伪静态不能用。
(你给的是 .htaccess 啊当然不能用了
放狗搜了一下,发现几乎都是先用 Rewrite 重写成 index.php/XXXYYY,然后再在 PHP 段里把后缀拆出来扔进 PATH_INFO 里,不能更麻烦。
想了一下,写了以下配置代码,测试一次通过。
location ~* \.php$ {
fastcgi_pass unix:/var/run/php5.sock;
include fastcgi.conf;
+ fastcgi_param PATH_INFO $request_uri;
}
存档以留给后人。
1
Kokororin 2015-08-03 11:51:23 +08:00
location / {
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } 不需要PATHINFO |
5
msg7086 OP @Kokororin 就是因为看到了官方这种神奇写法我才来发帖的。
帖子里提了,Rewrite,然而你不觉得这链接更难受了么。 |
6
Kokororin 2015-08-03 16:27:03 +08:00
@msg7086 你是说链接会出现?s=xxx?照官方的写法的话,实际链接还是http://site/Contorller/Action的形式。
|
7
realpg 2015-08-03 18:36:44 +08:00
好评收藏。
其实这是个通用的方案了,可以解决很多框架的路由问题。只要支持pathinfo模式的 如果在强化一下,fastcgi解析从*.php换成index.php,然后排除一个static静态目录其他的强制重写,就更完美了 |
8
jarlyyn 2015-08-03 19:13:36 +08:00
框架没入口么……
这不是上传任何一个php都能运行了么? |