专栏首页Tech爬虫(公众号php_pachong)详解如何在url中去掉index.php

详解如何在url中去掉index.php

THINKPHP官方论坛和网络上很多NGINX配置教程不是太完善的。我一直比较喜欢使用lnmp.org配置服务器环境。所以本文将介绍 LNMP 配置NGINX 支持THINKPHP PATHINFO模式 。

thinkphp的url访问:http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值...],这个需要支持pathinfo,Apache默认支持,而Nginx不支持。

1,修改PHP.INI 支持 PHPINOF

PHP配置文件:/usr/local/php/etc/php.ini

更改php.ini 找到:cgi.fix_pathinfo=0 更改为:cgi.fix_pathinfo=1

2.修改nginx对应配置文件

LNMP上各个版本pathinfo各个版本的设置基本一样:

lnmp v1.1上,修改对应虚拟主机的配置文件 去掉#include pathinfo.conf前面的#,把try_files $uri =404; 前面加上# 注释掉。

1.2, 1.3上,修改对应虚拟主机的配置文件 将include enable-php.conf;替换为include enable-php-pathinfo.conf;

修改pathinfo需要重启nginx生效。

去掉 index.php

location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; } }

linux中 /usr/local/nginx/conf/配置文件

windows中

注意: root配置要定位到yyyy的位置,不一定是localhost

"D:/xxxx/localhost/yyyy";

3.重启lnmp即可。

lnmp restart

4.设置url_mode =2

// -----------URL伪静态后缀设置----------
'URL_MODEL'=>'2',  // 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE  模式); 3 (兼容模式)  默认为PATHINFO 模式

注:有些文章提到nginx不支持pathinfo,需要在config文件中设置。

我没遇到过! 下面是别人的解决方法,仅供参考。

 location ~ \.php {    #去掉$
         root          H:/PHPServer/WWW;
         fastcgi_pass   127.0.0.1:9000;
         fastcgi_index  index.php;
         fastcgi_split_path_info ^(.+\.php)(.*)$;     #增加这一句
         fastcgi_param PATH_INFO $fastcgi_path_info;    #增加这一句
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include        fastcgi_params;
    }  

还有人是这么配置的:

server {
listen 80;
root *****************/public_html;
server_name **************.com;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
location ~ \.php(.*)$ {
fastcgi_pass unix:/tmp/php-70-cgi.sock;
fastcgi_index index.php;
fastcgi_param script_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $2;
include fcgi.conf;
########################################################################
pathinfo配置开始
########################################################################
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param script_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
########################################################################
pathinfo配置结束
########################################################################
}

本文分享自微信公众号 - Tech爬虫(php_pachong),作者:爬虫

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用thinkphp实现分页

    通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持。分页类目录:/Thinkphp/Library/Org/Bjy/P...

    公众号php_pachong
  • 什么时候开始写测试用例

    此时这个开始设计系统测试用例,无法编写很具体细节的用例,但是我们可以思考编写简略测试用例的要点。

    公众号php_pachong
  • nginx重写url】之 当项目有多个入口文件时

    但当我们的php项目有多个入口文件时,(假如有index.php, admin.php, app.php, api.php 四个入口文件),在不处理的状态下,u...

    公众号php_pachong
  • 让Nginx支持ThingPHP的rewrite路由模式

    AlicFeng
  • [Nginx] location与rewrite配合处理项目的重写和路径问题

    某个项目中路由是通过$_SERVER['REQUEST_URI']来进行的匹配处理 , 并且隐藏了index.php

    陶士涵
  • AVD Nexus_5X_API_P is already running. If that is not the case, delete the files at ...

    AVD Nexus_5X_API_P is already running. If that is not the case, delete the files...

    用户2965768
  • CSS3变形属性

    CSS3变形 CSS2.1中的页面都是静态的,网页设计师也习惯把它作为页面效果的设计工具。多年来,Web设计师依赖于图片、Flash或 JavaScript才能...

    py3study
  • C#打印丰密面单 顺丰电子面单

    丰密面单,就是隐藏了用户个人信息的顺丰快递面单。该面单可将寄、收件人名字、手机、地址等部分信息隐藏,让个人信息不再直接暴露。

    老杨占线
  • Python基础学习-列表简介

    一:列表是什么? 1 定义:列表是由一系列按特定顺序排列的元素组成。在Python中,用方括号[]来表示列表,并用逗号来分割其中的元素。 例: ? 输出: ? ...

    爱吃西瓜的番茄酱
  • Linux 内存池【转】

    233333

扫码关注云+社区

领取腾讯云代金券