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

如何将指定.htaccess规则完整正确转换为Nginx配置

转换方案及疑问解答

关于try_files参数的疑问解答

你自行转换的前端控制器规则无需添加?$args参数。Nginx默认会将原始请求携带的查询参数自动传递给重写后的/index.php,只有当你需要手动覆盖、修改查询参数时,才需要显式添加?$args配置,常规场景下省略该参数完全可以正常工作。

完整转换后的Nginx配置

server {
    server_name example.com;
    root /var/www/example.com;

    index index.html index.htm index.php;
    # 对应.htaccess的Options -Indexes,关闭目录索引
    autoindex off;

    # 对应.htaccess的全局CORS配置
    add_header Access-Control-Allow-Origin "*";

    location / {
        # 对应非目录下的末尾斜杠301重定向
        rewrite ^/(.*)/$ /$1 permanent;
        
        # 对应前端控制器转发规则,替换原有=404的配置
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        # 对应.htaccess的HTTP_AUTHORIZATION头传递规则
        fastcgi_param HTTP_AUTHORIZATION $http_authorization;
        
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
     }
  
    location ~ /\.ht {
        deny all;
    }
    # 对应.htaccess的隐藏.env文件规则
    location ~ /\.env {
        deny all;
        return 403;
    }
}

规则对应说明

  • autoindex off:对应原.htaccess中Options -Indexes配置,禁止目录列表访问
  • 全局add_header Access-Control-Allow-Origin "*":对应原CORS配置
  • rewrite ^/(.*)/$ /$1 permanent:对应原非目录下末尾斜杠301重定向规则,Nginx默认会在检查路径是否为目录前执行该重写,符合原规则逻辑
  • fastcgi_param HTTP_AUTHORIZATION $http_authorization:对应原HTTP授权头传递规则,确保PHP可以正常获取到Authorization请求头
  • location ~ /\.env块:对应原隐藏.env文件的规则,禁止所有对.env文件的访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:54:03