我想重写一个网址
/shop/?category=kitset-kitchens
至
shop/category/kitset-kitchens
我尝试了什么:
rewrite ^/shop.*$ /shop/category/$arg_category permanent;
goes to:
shop/category/kitset-kitchens?category=kitset-kitchens
如果我输入“?” 像这样:
rewrite ^/shop.*$ /shop/category/$arg_category? permanent;
goes to:
shop/category/
我尝试使用变量,但结果是一样的。只要 $args 设置为 '' 所有其他变量都是空的,否则,它会在 URL 的末尾添加 get 查询。我究竟做错了什么?
我不想使用条件
我不确定浏览器是否会在缓存重定向后考虑查询参数。这意味着在浏览器执行一次 from
/shop/?category=kitset-kitchens
to重定向/shop/category/kitset-kitchens
后,即使category
查询参数有另一个值,它也会将您重定向到同一页面。不同的浏览器可能会有不同的行为,所以这个主题需要一些测试。回到问题,为了清除
category
查询参数保留您可以使用的所有其他参数请注意,使用此配置,用户浏览器中的网址不会从 更改
example.com/shop/?category=kitset-kitchens
为example.com/shop/category/kitset-kitchens
(我们在这里仅使用内部重写)。您可以尝试重定向(将指令的break
标志更改为),但正如我已经说过的,由于可能存在缓存问题,此配置需要通过各种浏览器进行测试。您也可以尝试临时重定向(为此使用标志)。rewrite
permanent
redirect
你说你不想使用条件,但由于除了
set
和块rewrite
内没有其他指令if
,它可能被认为是安全的。