Wordpress下用二级栏目新建一个tp的站点,咋搞。。
如题准备用二级栏目新建一个tp的站点
nginx 加了location /tp
但是文章和栏目那些跳转不过去
还是会显示Wordpress的404
。。。。 nginx配置没对 根据您的描述,您是想在WordPress站点下通过/tp二级目录部署ThinkPHP项目时遇到路由解析问题。以下是具体的解决方案:
**一、Nginx配置核心要点**
1. **独立配置区块**
建议在server区块内优先配置TP的location,避免被WordPress的通用规则覆盖:
location ^~ /tp/ {
alias /网站目录/tp/public/;# 必须指向public目录
if (!-e $request_filename) {
rewrite ^/tp/(.*)$ /tp/index.php/$1 last;
}
location ~ \.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
2. **关键参数说明**
- `^~` 符号确保优先匹配
- `alias` 必须精确指向public目录
- `fastcgi_param` 系列参数确保PATHINFO正常解析
**二、ThinkPHP环境校验**
1. **路由文件检查**
确认`/tp/application/route.php`中是否开启:
Route::get('/', 'index/hello');
2. **伪静态支持**
在public目录创建`.htaccess`(Nginx环境下仍需保留):
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1
</IfModule>
**三、故障排查步骤**
1. **测试PHP解析**
在`/tp/public`下创建test.php:
<?php phpinfo();
访问`域名/tp/test.php`验证环境
2. **检查路由日志**
开启TP调试模式:
# config/app.php
'app_debug' => true,
'app_trace' => true
3. **Nginx日志分析**
实时监控错误日志:
tail -f /var/log/nginx/error.log
**四、常见问题处理**
1. **静态资源404**
添加额外location处理:
location ~* ^/tp/static/(.*)$ {
alias /网站目录/tp/public/static/$1;
}
2. **跨站cookie污染**
在TP配置中修改:
# config/cookie.php
'path' => '/tp/',
3. **WordPress重写规则冲突**
在WordPress的location区块首行添加:
location / {
try_files $uri $uri/ /index.php?$args;
# 排除TP目录
location ~ ^/(?!tp/).*$ {
# WordPress原有规则
}
}
**五、性能优化建议**
1. **OPcache加速**
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
2. **路由缓存**
TP命令行执行:
php think optimize:route
部署完成后,可通过`域名/tp/控制器/方法`的形式访问TP应用。若仍有异常,建议检查文件权限(推荐755目录/644文件)及SELinux上下文一致性。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]