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

.htaccess通配符配置:根目录子路径映射至pages子文件夹

嘿,这个需求用服务器的重写规则就能轻松实现,不用手动给每个页面加规则,通配符就能搞定!我分Apache和Nginx两种常用服务器给你写配置:

Apache 配置(.htaccess)

把下面的代码放到网站根目录的.htaccess文件里就行:

RewriteEngine On

# 排除真实存在的文件和目录,避免干扰静态资源访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 检查pages目录下是否存在与请求路径同名的文件夹
RewriteCond %{DOCUMENT_ROOT}/pages/%{REQUEST_URI} -d
# 转发到对应文件夹下的index.php
RewriteRule ^(.*)$ /pages/$1/index.php [L]

# 当以上条件都不满足时,返回404错误
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ - [R=404,L]

简单解释下规则逻辑:

  • 首先开启重写引擎,这是Apache重写的基础
  • 前两个条件确保我们只处理那些不存在的文件/目录请求,不会影响你已有的静态资源(比如图片、CSS)
  • 第三个条件专门检查pages子目录下是否有和当前请求同名的文件夹
  • 如果满足所有条件,就把请求转发到对应文件夹的index.php;如果不满足,直接返回404
Nginx 配置

把下面的代码加到你的Nginx站点配置的server块里:

# 先尝试访问真实存在的文件或目录,找不到再走重写逻辑
location ~ ^/(.*)$ {
    try_files $uri $uri/ @rewrite;
}

# 自定义重写规则块
location @rewrite {
    # 检查pages目录下是否存在对应名称的文件夹
    if (-d $document_root/pages/$1) {
        rewrite ^/(.*)$ /pages/$1/index.php last;
    }
    # 不存在则返回404错误
    return 404;
}

# PHP文件解析配置(如果你的Nginx已经有这段可以忽略)
location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 请根据你的PHP版本和配置调整路径
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

逻辑说明:

  • 第一个location先尝试直接访问请求的文件或目录,这样不会干扰正常的静态资源访问
  • 如果找不到,就转到@rewrite这个命名块里检查pages目录下的文件夹
  • 存在对应文件夹就重写到该文件夹的index.php,不存在就直接返回404
  • 最后一段是PHP解析的基础配置,确保index.php能被Nginx正确处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:14:25