温馨提示×

thinkphp在ubuntu如何做伪静态

小樊
41
2026-10-01 15:32:21
栏目: 编程语言

在 Ubuntu + ThinkPHP 环境下配置伪静态,通常是通过 Nginx 或 Apache 来实现。下面分别说明常见做法(以 ThinkPHP 5 / 6 为例,其他版本思路相同)。


一、Nginx 配置伪静态(推荐)

1. 修改 Nginx 站点配置

编辑你的站点配置文件(一般在 /etc/nginx/sites-available/ 下):

sudo nano /etc/nginx/sites-available/your_site.conf

2. 加入伪静态规则

ThinkPHP 5 / 6 通用配置

server {
    listen 80;
    server_name yourdomain.com;
    root /var/www/your_project/public;

    index index.php index.html index.htm;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

注意:

  • root 要指向 public 目录
  • PHP 版本按你实际安装修改

3. 重启 Nginx

sudo nginx -t
sudo systemctl restart nginx

二、Apache 配置伪静态

1. 启用 rewrite 模块

sudo a2enmod rewrite
sudo systemctl restart apache2

2. 修改 Apache 配置

编辑站点配置(如 /etc/apache2/sites-available/000-default.conf):

<VirtualHost *:80>
    DocumentRoot /var/www/your_project/public

    <Directory /var/www/your_project/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

3. 创建 .htaccess(在 public 目录)

<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>

三、ThinkPHP 自身设置

在 config/app.php(TP6)或 application/config.php(TP5)中:

'url_rewrite' => true,

TP6 示例:

// config/app.php
'with_route' => true,

四、常见问题排查

✅ 访问 .php 正常但伪静态 404
→ 检查 root 是否指向 public
→ 检查 AllowOverride All(Apache)

✅ Nginx 报 500
→ 查看日志:/var/log/nginx/error.log

✅ 入口文件暴露
→ 确保只暴露 public/index.php


如果你能告诉我:

  • ThinkPHP 版本(5.0 / 5.1 / 6.0)
  • Web 服务(Nginx / Apache)
  • Ubuntu 版本

我可以给你完全对应的一份配置。

0 踩