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

如何通过URL重写移除特定词并转发至原URL

嘿,这个需求很常见,用URL重写+反向代理就能轻松搞定!我给你准备了Nginx和Apache两种主流服务器的配置方案,你可以根据自己的环境来选:


Nginx 配置方案

首先确认你的Nginx已经启用了rewrite模块(默认是启用状态),然后在对应域名的server块里添加以下规则:

server {
    listen 80;
    server_name www.example.com;

    # 精准匹配/un、/cn这类路径,转发到带/web的实际地址
    location ~ ^/(un|cn)$ {
        rewrite ^/(.*)$ /web/$1 last;
    }

    # 如果后续还有更多类似路径,用这条通用规则更省心(自动匹配所有非/web开头的路径)
    # location ~ ^/(?!web/)(.*)$ {
    #     rewrite ^/(.*)$ /web/$1 last;
    # }

    # 处理实际请求的核心配置
    location /web/ {
        # 如果是静态文件,直接指向文件目录
        # root /path/to/your/project/files;
        # 如果是反向代理到后端服务
        # proxy_pass http://your-backend-service-ip:port;
        # proxy_set_header Host $host;
        # proxy_set_header X-Real-IP $remote_addr;
    }
}

配置完记得重启Nginx生效:sudo systemctl restart nginx


Apache 配置方案

先确保Apache启用了mod_rewrite模块(可以用sudo a2enmod rewrite开启),然后在站点的.htaccess文件或者虚拟主机配置里添加规则:

RewriteEngine On
RewriteBase /

# 精准匹配/un、/cn,转发到实际路径
RewriteRule ^(un|cn)$ /web/$1 [L,P]

# 通用版本:自动匹配所有非/web开头的路径
# RewriteRule ^(?!web/)(.*)$ /web/$1 [L,P]
  • [L]表示这是最后执行的规则,避免重复匹配
  • [P]代表用反向代理转发请求,如果是静态文件,只保留[L]即可

配置完成后重启Apache:sudo systemctl restart apache2


小提示

  • 测试前可以先看服务器日志(Nginx:/var/log/nginx/access.log;Apache:/var/log/apache2/access.log),确认请求是否正确转发
  • 如果有不需要重写的特殊路径(比如/admin),可以在规则前加排除条件,避免被错误转发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:11:34