我想要实现的是从 mysite.com/en/something/something1 重定向到 mysite.com/something/something1 有没有办法使用 nginx conf 从 url 中删除静态子路径 /en/?
答案1
您可以使用 Nginx 的rewrite
指令从 URL 中删除/en
子路径。以下是示例:
server {
listen 80;
server_name mysite.com;
# Redirect /en/ URLs to their equivalent URL without /en/
rewrite ^/en/(.*)$ /$1 permanent;
# Your other server configuration goes here
...
}
该指令使用正则表达式rewrite
匹配以 开头的任何 URL并捕获该子路径之后的所有内容。然后,它重写 URL 以删除 /`en/ 子路径,并使用 permanent 标志将客户端重定向到新 URL,这会告诉客户端永久缓存重定向。/en/
(.*)
请注意,此配置假定您要永久重定向所有以 /en/ 开头的 URL。如果您只想删除特定一组 URL 的 /en/ 子路径,则需要调整重写指令中的正则表达式以仅匹配这些 URL。
我希望这能有所帮助!
答案2
上述方法的另一种替代方案:
server {
location ~ ^/en(/.+) {
return 301 $1;
}
location / {
... other configuration
}
}