Apache通配符重定向规则配置咨询
Apache通配符重定向规则配置咨询
看起来你需要实现一个基于查询字符串参数的动态重定向,把带有固定key jpc的请求转到对应路径下,我来给你详细说下配置方法:
首先得确保你的Apache服务器已经启用了mod_rewrite模块,这是实现这类重定向的基础。之后你可以在站点根目录的.htaccess文件(或者对应虚拟主机的配置块中)添加以下规则:
RewriteEngine On # 匹配查询字符串为jpc=任意值的请求 RewriteCond %{QUERY_STRING} ^jpc=([^&]+)$ # 将指定路径的请求重定向到捕获的参数路径,同时清空原查询字符串 RewriteRule ^first-path/index\.jsp$ /%1? [R=302,L]
我来拆解下每个部分的作用:
RewriteEngine On:开启URL重写功能,所有重写规则都需要先打开这个开关。RewriteCond %{QUERY_STRING} ^jpc=([^&]+)$:这条条件专门匹配查询字符串,^jpc=([^&]+)$表示查询字符串只能是jpc=xxx的形式(xxx可以是任意不包含&的字符串),括号里的([^&]+)会把xxx的值捕获下来,后面用%1就能引用这个值。RewriteRule ^first-path/index\.jsp$ /%1? [R=302,L]:这条规则匹配请求路径正好是/first-path/index.jsp的请求,然后把它重定向到/%1(也就是刚才捕获到的xxx值)。末尾的?很重要,它会清空原来的查询字符串,避免重定向后的URL还带着?jpc=xxx。R=302代表临时重定向,如果你的需求是永久重定向(比如SEO场景),可以改成R=301;L表示这是最后一条规则,匹配成功后就不再处理后续规则了。
如果你的场景里查询字符串可能还包含其他参数(比如jpc=red&other=123),但你只需要提取jpc的值,那可以把条件改成这样:
RewriteCond %{QUERY_STRING} (^|&)jpc=([^&]+)(&|$)
对应的RewriteRule里要把%1改成%2,因为这次捕获的是第二个括号里的内容。
备注:内容来源于stack exchange,提问作者Toji K Dominic
相关产品推荐
相关产品推荐

