tp 是把自己当作主站来处理的,如果不想去修改配置文件,那么就要把 tp 项目设置成虚拟主机或把 tp 项目所在目录设置成虚拟目录
如果是 apache 就很简单,把 .htaccess 放在项目目录中就可以了,所以apache配置tp项目基本上不会出现这种问题,只有Nginx会出现访问所有链接却跳转到首页的问题。
修改nginx.conf配置如下
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name xxxxx;
    root your path;
    index index.php index.html index.htm;
    location / {
         try_files $uri $uri/ /index.php$is_args$args;
         #访问路径的文件不存在则重写URL转交给ThinkPHP处理
                 if (!-e $request_filename) {
                    rewrite  ^/(.*)$  /index.php/$1  last;
                    break;
    location ~ \.php {#此处php后面的$符号要去掉
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        #加载Nginx默认"服务器环境变量"配置
                include        fastcgi.conf;
                #设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
                set $fastcgi_script_name2 $fastcgi_script_name;
                if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
                    set $fastcgi_script_name2 $1;
                    set $path_info $2;
                fastcgi_param   PATH_INFO $path_info;
                fastcgi_param   SCRIPT_NAME   $fastcgi_script_name2;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    location ~ /\.ht {
        deny all;
    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
                    tp 是把自己当作主站来处理的,如果不想去修改配置文件,那么就要把 tp 项目设置成虚拟主机或把 tp 项目所在目录设置成虚拟目录如果是 apache 就很简单,把 .htaccess 放在项目目录中就可以了,所以apache配置tp项目基本上不会出现这种问题,只有Nginx会出现访问所有链接却跳转到首页的问题。修改nginx.conf配置如下server {    listen 80...
        index  index.htm index.html index.php;  
        #访问路径的文件不存在则重写URL转交给ThinkPHP处理  
        if (!-e $request_filename) {  
           rewrite  ^...
    server_name    api.cloudworkshop.cn;
    access_log    /app/logs/nginx/api.log;
    error_log    /app/logs/nginx/api_error.log;
    set        $root    /data/y...
				
Nginx低版本中,是不支持PATHINFO的。所以tp6使用路由都是返回首页。ThinkPHP官方给出的解决方案是在nginx.conf下添加以下代码,这个是源码编译下的Lnmp环境,但是在宝塔集成环境中修改不生效,这段代码没有问题,只是在宝塔集成环境中需要修改的地方不是nginx.conf。 location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=/$1 last; 宝塔下需要进
用tp框架在本地开发了项目时,用的是phpstudy继承环境,起初用的是apache服务器,但是切换到nginx环境时只有主页能访问,其他都会报nginx404的错误 当时也挺纳闷的,经分析得出原因:原网站环境为wamp使用了伪静态,伪静态规则写在网站根目录的.htaccess文件中,Apache下默认识别此文件内容,而Nginx服务器不识别.htaccess文件,导致伪静态规则无效,自然无法解析url地址,导致404错误(文件不存在) 解决方式,首先修改配置文件vhost文件 进行路径重写配置 代码..
对于ThinkPHP的URL访问路径,如:http://域名/index.php/Index/index/index,原先的Nginx的是不支持的pathinfo路径的,导致你在thinkPHP5上面测试的时候,输入相应的URL也不会提示模块名,控制器名或者方法名错误,而是出现一个404找不到的错误,那是因为Nginx无法解析这样的链接 配置 Nginx 使其支持 PHP 应用: vim /usr/
对于只能访问首页的原因是index.php没有隐藏,默认还是需要加上才能访问其他路径的 把httpd.conf文件的AllowOverride None 全部换成AllowOverride All 然后加载LoadModule rewrite_module modules/mod_rewrite.so去掉前面的#号注释 最后把.htaccess文件放到public的目录里,内容是: &lt...
刚刚经过千辛万苦配置好https可以使用了,然而居然还是有问题,只有首页面可以访问,其他页面地址都是404。 正在发愁的时候突然想到以前貌似看过这方面的东西,说是没有做地址跳转吧(具体我也说不准),直接上代码: try_files $uri $uri/ /index.php?$query_string; if (!-e $request_filena
1. 安装Nginx并确保它正在运行。您可以使用适用于您的操作系统的包管理器来安装它。 2. 打开Nginx配置文件。通常,它位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。 3. 在http块中添加一个新的server块,以配置您的Node.js项目。 server { listen 80; server_name your_domain.com; location / { proxy_pass http://localhost:3000; # 这里的端口号取决于您Node.js项目的实际监听端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; 在上面的示例中,我们假设您的域名为your_domain.com,并且您的Node.js应用程序在本地监听3000端口。您可以根据您的实际情况进行修改。 4. 保存并关闭配置文件。 5. 重新加载Nginx配置以使更改生效。您可以使用以下命令: sudo nginx -t # 检查配置文件是否正确 sudo systemctl reload nginx # 重新加载Nginx配置 现在,当访问your_domain.com时,Nginx将代理请求到您的Node.js应用程序。请确保您的Node.js应用程序正在运行,并且监听与Nginx配置中指定的端口相同的端口。