如何在Nginx中配置以支持Thinkphp的URL重写?

avatar
作者
筋斗云
阅读量:0
在Nginx下配置ThinkPHP的URL重写,可以使用以下示例配置:,,``nginx,server {, listen 80;, server_name yourdomain.com;, root /path/to/your/thinkphp/public;, index index.php index.html index.htm;,, location / {, try_files $uri $uri/ /index.php?$query_string;, },, location ~ \.php$ {, fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据实际PHP版本和路径调整, fastcgi_index index.php;, include fastcgi_params;, fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;, },},`,,这个配置将确保所有请求首先尝试直接访问文件,如果文件不存在则转发到 index.php`。

Nginx下支持Thinkphp URL Rewrite的配置示例

如何在Nginx中配置以支持Thinkphp的URL重写?

配置

在Nginx服务器上,为了实现ThinkPHP框架的URL重写(Rewrite)功能,需要对Nginx的配置文件进行适当的修改,主要通过location块中的rewrite指令来完成,以下是一个详细的配置示例:

基本配置

 server {     listen 80 default_server;     server_name www.example.com;     root /var/www/project_name;     index index.html index.php;     location / {         try_files $uri $uri/ =404;         if (!-e $request_filename) {             rewrite ^(.*)$ /index.php?s=$1 last;             break;         }     }     error_page 404 /404.html;     location = /404.html {         root /var/www/project_name;     }     error_page 500 502 503 504 /50x.html;     location = /50x.html {         root /var/www/project_name;     }     location ~ \.php$ {         root /var/www/project_name;         fastcgi_pass 127.0.0.1:9000;         fastcgi_index index.php;         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;         include fastcgi_params;     } }

配置详解

配置项 功能描述 备注
listen 80 default_server; 监听80端口,作为默认服务器
server_name www.example.com; 设置服务器名称为www.example.com
root /var/www/project_name; 设置网站根目录
index index.html index.php; 设置默认索引文件
location / 处理根路径请求
try_files $uri $uri/ =404; 检查请求的文件或目录是否存在,不存在则返回404错误
if (!-e $request_filename) 如果请求的文件或目录不存在
rewrite ^(.*)$ /index.php?s=$1 last; 将请求重写到index.php,并传递参数s
break; 终止当前location块的处理
error_page 404 /404.html; 设置自定义404错误页面
location = /404.html 指定404错误页面的路径
error_page 500 502 503 504 /50x.html; 设置自定义50x错误页面
location = /50x.html 指定50x错误页面的路径
location ~ \.php$ 处理PHP文件请求
fastcgi_pass 127.0.0.1:9000; 将PHP请求传递给FastCGI进程管理器
fastcgi_index index.php; 设置默认的PHP脚本文件名
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 设置SCRIPT_FILENAME参数
include fastcgi_params; 包含FastCGI参数配置文件

相关问题与解答

问题1:如何在二级目录下配置ThinkPHP的URL Rewrite?

解答: 如果在二级目录下安装ThinkPHP,可以在Nginx配置文件中添加如下内容:

如何在Nginx中配置以支持Thinkphp的URL重写?

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

youdomain替换为你的实际二级目录名称,这样配置后,访问方式可以简化为:

 http://serverName/youdomain/模块/控制器/操作/[参数名/参数值...]

问题2:如果服务器不支持PATHINFO模式,如何实现URL重写?

解答: 对于不支持PATHINFO模式的服务器,可以通过在Nginx配置文件中添加转发规则来实现。

如何在Nginx中配置以支持Thinkphp的URL重写?

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

这种方式会将所有非文件、非目录的请求转发到index.php,并通过参数s传递原始请求路径。

到此,以上就是小编对于“Nginx下支持Thinkphp URL Rewrite的配置示例”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!