ThinkPHP5在nginx服务器上不支持pathinfo和出现404错误及隐藏index.php

ThinkPHP5在nginx服务器上部署,相信很多人都采坑了,其实我也不例外。

今天,我就说说在nginx服务器上遇到的问题

404出错和pathinfo的问题

在网站上找了很多资料,都是长篇大论的,而且很多都无法解决404这错误的提示

注: 在网站上很多都是更改nginx.conf【/usr/local/nginx/conf/nginx.conf】这个文件,我个人的习惯是根据当前站点进行配置;例如在:/usr/local/nginx/conf/vhost目录中添加你自己站点的配置文件,如:test.com.conf;到此,还是不能加载test.com.conf这个文件,最重要的一部要在/usr/local/nginx/conf/nginx.conf这个文件添加include vhost/*.conf;意思就是:把vhost目录中下xxx.conf的文件自动加载………………

/usr/local/nginx/conf/nginx.conf这个文件中代码复制到test.com.conf这个文件中,代码如下:

server
    {
        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;  # 这个位置就是填写你的IP或者域名;如:test.com
        index index.html index.htm index.php;
        root  /home/wwwroot/default;  # 这个位置就是您的站点目录

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;  ## 看到这个位置了吧,很重要,下面再说*^_^*

        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/access.log;
    }

然后重启lnmp restart 命令,自己配置的站点配置完成了。

然鹅,ThinkPHP5项目默认的情况下是访问 test.com 可以正常显示,如果用test.com/index.php/index/index/index这样进行访问,则出现404错误提示【哪怕在thinkphp5中的config.php的配置文件中开启debug模式,还是提示404错误】

解决:404错误和pathinfo模式

上述代码中有一家话: 看到这个位置了吧,很重要,下面再说_**

include enable-php.conf;
更改为:
include enable-php-pathinfo.conf; 或者 绝对的路径:include /usr/local/nginx/conf/enable-php-pathinfo.conf;

隐藏index.php

在自己站点配置文件中如:test.com.conf文件中添加如下代码即可:

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

至此,重启lnmp restart命令即可,根据自己的域名或者IP进行访问就可以看到你想要的效果。

ThinkPHP 3.2.3中,可以通过修改.htaccess文件或者在Apache配置文件中增加重写规则来实现隐藏index.php和Home。 方法一:修改.htaccess文件 1. 首先,确认你的服务器支持.htaccess文件,并且.htaccess文件已经开启。 2. 在项目根目录下新建.htaccess文件,并添加以下内容: ``` RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] ``` 3. 保存并上传.htaccess文件到服务器根目录。 4. 修改配置文件config.php,将URL_MODEL参数改为2。 ``` 'URL_MODEL' => 2, ``` 5. 访问项目时,可以通过访问http://域名/控制器/方法 的方式来访问,而不需要在URL中加上index.php或Home。 方法二:在Apache配置文件中增加重写规则 1. 打开Apache配置文件httpd.conf,搜索LoadModule rewrite_module modules/mod_rewrite.so,并确保该模块已开启。 2. 在VirtualHost标签中添加以下内容: ``` <Directory "/var/www/html"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> ``` 其中/var/www/html为项目根目录,AllowOverride All表示允许.htaccess文件中的重写规则生效。 3. 在.htaccess文件中添加以下内容: ``` RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] ``` 4. 修改配置文件config.php,将URL_MODEL参数改为2。 ``` 'URL_MODEL' => 2, ``` 5. 访问项目时,可以通过访问http://域名/控制器/方法 的方式来访问,而不需要在URL中加上index.php或Home。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woody_deng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值