You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置.htaccess:公共目录无对应文件时跳转至index.php

实现public目录文件不存在时跳转至index.php的配置方案

需求说明

当public目录中的文件不存在时,跳转至index.php,具体场景要求:

  • 访问/localhost/project/时显示/public/index.php
  • 访问/localhost/project/wrongpath时显示/public/index.php
  • 访问/localhost/project/js/main.js时显示/public/js/main.js

目录结构

htdocs
├── project
│   └── public
│       ├── index.php
│       ├── js
│       │   └── main.js
│       ├── image
│       │   └── def.png
│       ├── css
│       │   └── main.css
│       └── asset

解决方案

Apache 服务器(使用 .htaccess)

在htdocs/project/目录下创建.htaccess文件,添加以下规则:

RewriteEngine On

# 检查public目录下是否存在请求的文件/目录,存在则直接访问
RewriteCond %{DOCUMENT_ROOT}/project/public%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/project/public%{REQUEST_URI} -d
RewriteRule ^(.*)$ /project/public/$1 [L]

# 所有不存在的请求转发到public/index.php
RewriteRule ^(.*)$ /project/public/index.php [L]

规则说明:

  • RewriteCond 验证public目录下是否存在与请求路径匹配的文件或目录
  • 如果匹配成功,RewriteRule 将请求直接指向该文件/目录
  • 若匹配失败,所有请求都会被转发到public/index.php

Nginx 服务器

在Nginx配置文件的server块中添加以下配置:

location /project {
    try_files $uri $uri/ /project/public/index.php;
}

# PHP解析配置(根据你的PHP版本调整)
location ~ \.php$ {
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

规则说明:

  • try_files 依次尝试访问请求的路径、路径目录,若都不存在则转发到public/index.php
  • 第二个location块负责处理PHP文件的解析请求

内容的提问来源于stack exchange,提问作者armada45

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:55:14