PTAdmin 使用 Laravel 路由处理页面请求。伪静态配置的作用,是把服务器上不存在的文件和目录交给 public/index.php 处理,让后台地址和其他页面可以正常访问、刷新,而不需要在网址中显示 index.php。
配置前先确认
无论使用 Nginx、Apache 还是 IIS,都要先确认下面几项:
- PTAdmin 程序已经上传并完成依赖安装。
- 网站绑定的运行目录或根目录指向 PTAdmin 的
/public目录。 - PHP 版本和扩展符合 PTAdmin 的运行要求。
- 网站目录具有正常的读取权限,
storage和bootstrap/cache具有写入权限。
最重要的是运行目录必须指向
/public。不要把项目根目录直接暴露到公网,否则不仅路由可能异常,还可能泄露.env等敏感文件。
Nginx 伪静态
宝塔面板用户可以进入“网站”,打开对应站点的“设置”,然后选择“伪静态”。如果列表中有 Laravel,可以直接选择 Laravel 并保存。
也可以手动填写下面的规则:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
完整配置中的位置
如果是手动维护 Nginx 配置,需要把规则放在当前网站的 server 配置块中。网站根目录需要指向项目的 public 目录,例如:
server {
listen 80;
server_name example.com;
root /www/wwwroot/example.com/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
上面的域名、网站路径和 PHP-FPM 地址只是示例,请使用服务器上的实际配置。宝塔已经生成 PHP 配置时,只需要修改运行目录和伪静态,不要重复添加 PHP 配置块。
Nginx 保存后报错
先使用下面的命令检查配置语法:
nginx -t
确认没有报错后再重新加载 Nginx:
nginx -s reload
Apache 伪静态
Apache 需要开启 mod_rewrite 模块,并允许网站读取 .htaccess。PTAdmin 的网站根目录同样要指向 public。
创建 .htaccess
在 PTAdmin 的 public 目录中创建或检查 .htaccess 文件,写入下面的内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
允许读取 .htaccess
如果 .htaccess 文件存在但规则不生效,需要检查 Apache 站点配置。对应目录应允许覆盖配置:
<Directory "/www/wwwroot/example.com/public">
AllowOverride All
Require all granted
</Directory>
请把示例路径换成实际的 public 目录。修改后重启 Apache。
检查 mod_rewrite
Linux 服务器可以使用下面的命令查看模块是否已经加载:
apachectl -M | grep rewrite
看到 rewrite_module 表示模块已经启用。不同 Linux 发行版的启用方式可能不同,请以服务器环境为准。
IIS 伪静态
IIS 需要安装 Microsoft URL Rewrite 模块,并正确配置 PHP FastCGI。网站的物理路径要指向 PTAdmin 的 public 目录。
创建 web.config
在 public 目录中创建或检查 web.config 文件,写入下面的内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Laravel" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
IIS 配置注意事项
- IIS 管理器中能够看到“URL 重写”,才表示 URL Rewrite 模块已经安装。
- 默认文档中应包含
index.php。 - PHP 应通过 FastCGI 正常运行。
- IIS_IUSRS 用户需要读取网站文件,并对
storage和bootstrap/cache目录具有写入权限。
如何检查是否配置成功
保存配置并重启或重新加载网站服务后,按下面的顺序检查:
- 打开网站首页,确认页面可以正常显示。
- 打开 PTAdmin 后台登录地址,确认可以进入登录页面。
- 登录后台后刷新当前页面,确认不会出现 404。
- 检查图片、CSS 和 JavaScript 是否可以正常加载。
- 网址中不需要手动添加
index.php。
常见问题
首页能打开,其他页面刷新后出现 404
通常是伪静态没有生效。Nginx 检查 try_files,Apache 检查 mod_rewrite 和 AllowOverride All,IIS 检查 URL Rewrite 模块和 web.config。
打开网站显示 403
先确认网站根目录是否指向 public,再检查目录权限、默认首页和服务器的访问限制。
打开网站显示 500
500 不一定是伪静态造成的。请检查 PHP 错误日志、网站服务错误日志、storage/logs 日志、PHP 扩展和目录写入权限。
页面没有样式或图片打不开
检查网站域名、HTTPS、运行目录和静态文件路径。不要把真实存在的图片、CSS 和 JavaScript 全部重写到 index.php。
修改配置后没有变化
确认修改的是当前域名实际使用的站点配置,并重新加载 Nginx、Apache 或 IIS。浏览器端可以使用 Ctrl + F5 强制刷新。
最后检查一下
- 网站根目录已经指向
/public。 - 只使用了当前服务器对应的一套伪静态规则。
- 网站首页和后台地址都可以正常打开。
- 刷新后台和内容页面不会出现 404。
- 静态资源可以正常加载。
.env等项目文件不能从公网访问。