Nginx使用get参数将单个url重写为漂亮的url

Nginx使用get参数将单个url重写为漂亮的url,nginx,Nginx,我想重写一些类别。 例如: example.com/videos?c=18 致: example.com/category/name 我尝试使用多个示例执行此操作,大多数示例都没有效果,此示例仅为我提供了未找到的所有页面/视频页面: location /videos { if ($args ~ "c=18") { rewrite ^/videos(.*) http://$server_name/category/name$1 permanent; } } 这是否完全可以通过Nginx实现?我

我想重写一些类别。 例如:

example.com/videos?c=18

致:

example.com/category/name

我尝试使用多个示例执行此操作,大多数示例都没有效果,此示例仅为我提供了未找到的所有页面/视频页面:

location  /videos {
if ($args ~ "c=18") {
rewrite ^/videos(.*) http://$server_name/category/name$1 permanent;
}
}
这是否完全可以通过Nginx实现?我试图实现的是什么?

“if”指令不是最佳解决方案,但在您的情况下,您可以尝试使用“if”和$arg_name(请求行中的参数名称):

“if”指令不是最佳解决方案,但在您的情况下,可以尝试使用“if”和$arg_name(请求行中的参数名称):


据我所知,目前您的网站有此url方案,您无法更改:

http://example.com/videos?c=18
但是,您希望为访问者提供“漂亮”的URL,如

http://example.com/category/name
这个漂亮的URL在站点上的任何地方都不存在,这就是为什么您必须重写它,例如,将漂亮的虚拟URL转换为您的脚本可以处理的真实URL

再一次,你从虚拟重写到现实,而不是反过来

以下指令将
/category/cars/
转换为
/videos?c=cars

location /category {
    rewrite ^/category/(.*)$ /videos?c=$1 last;
}
但是您的脚本无法理解
/videos?c=cars
url,它需要类别ID才能工作。因此,在您的例子中,漂亮的url应该是

http://example.com/category/18
将被改写为

http://example.com/videos?c=18

据我所知,目前您的网站有此url方案,您无法更改:

http://example.com/videos?c=18
但是,您希望为访问者提供“漂亮”的URL,如

http://example.com/category/name
这个漂亮的URL在站点上的任何地方都不存在,这就是为什么您必须重写它,例如,将漂亮的虚拟URL转换为您的脚本可以处理的真实URL

再一次,你从虚拟重写到现实,而不是反过来

以下指令将
/category/cars/
转换为
/videos?c=cars

location /category {
    rewrite ^/category/(.*)$ /videos?c=$1 last;
}
但是您的脚本无法理解
/videos?c=cars
url,它需要类别ID才能工作。因此,在您的例子中,漂亮的url应该是

http://example.com/category/18
将被改写为

http://example.com/videos?c=18

这是你在网站上实际拥有的“漂亮”URL还是你想要的URL
example.com/videos?c=18
这就是我现在在网站上的内容:example.com/videos?c=18,我想把它改为example.com/category/nameofcategorys,这样你就可以不用
example.com/videos?c=18
了。假设c=18类包括汽车。因此,我希望使用example.com/category/cars或example.com/videos/cars而不是get参数。您只能重写url中已经存在的片段。在那里看不到
cars
。这是您在网站上实际拥有的“漂亮”URL还是您想要的URL
example.com/videos?c=18
这就是我现在在网站上的内容:example.com/videos?c=18,我想把它改为example.com/category/nameofcategorys,这样你就可以不用
example.com/videos?c=18
了。假设c=18类包括汽车。因此,我希望使用example.com/category/cars或example.com/videos/cars而不是get参数。您只能重写url中已经存在的片段。在那里看不到
汽车
。谢谢!我来试试,谢谢!我会试一试的。对我来说也很有用!也谢谢你!谢谢