Apache mod_重写规则:如果URL包含指向原始URL的特定字符串
我的客户一直在编辑网站中导航的结构,这导致了一些mod_重写问题。我如何在apache中制定此规则: 实际的ur是Apache mod_重写规则:如果URL包含指向原始URL的特定字符串,apache,mod-rewrite,Apache,Mod Rewrite,我的客户一直在编辑网站中导航的结构,这导致了一些mod_重写问题。我如何在apache中制定此规则: 实际的ur是 /AuthCont?FORMSGROUP_ID__=AuthenticationFG&__START_TRAN_FLAG__=Y&FG_BUTTONS__=LOAD&ACTION.LOAD=Y&AuthenticationFG.LOGIN_FLAG=1&T_ID=ND 但如果用户手动将AuthenticationFG.LOGIN\u FLA
/AuthCont?FORMSGROUP_ID__=AuthenticationFG&__START_TRAN_FLAG__=Y&FG_BUTTONS__=LOAD&ACTION.LOAD=Y&AuthenticationFG.LOGIN_FLAG=1&T_ID=ND
但如果用户手动将AuthenticationFG.LOGIN\u FLAG=1更改为AuthenticationFG.LOGIN\u FLAG=2或AuthenticationFG.LOGIN\u FLAG=3,则应将其重写为实际AuthenticationFG.LOGIN\u FLAG=1,请帮助:
修改查询字符串:在访问/path时,将查询字符串中的任何单个val实例更改为其他val。请注意%1和%2是对上一次重写中正则表达式的匹配部分的反向引用
因此,您可以尝试以下示例:
RewriteCond %{QUERY_STRING} ^(.*)LOGIN_FLAG=2(.*)$
RewriteCond %{QUERY_STRING} ^(.*)LOGIN_FLAG=3(.*)$
RewriteCond %{QUERY_STRING} ^(.*)LOGIN_FLAG=4(.*)$
# and so on for all the numbers...
# then:
RewriteRule /AuthCont /AuthCont?%1LOGIN_FLAG=1%2
编辑
好的,试试这个:
RewriteCond %{QUERY_STRING} ^(.*)LOGIN_FLAG=(.*)$
RewriteRule ^(.*)$ http://your_domain_here.com/AuthCont?FORMSGROUP_ID__=AuthenticationFG&__START_TRAN_FLAG__=Y&FG_BUTTONS__=LOAD&ACTION.LOAD=Y&AuthenticationFG.LOGIN_FLAG=1&T_ID=ND? [L]
我过去在尝试重新编写大型查询字符串时遇到过问题,这在很大程度上取决于主机提供商。尝试创建一个带有小URI字符串的测试用例,以确保这不是问题所在。另外,请验证是否已启用Apache mod_rewrite指令?在重写规则的末尾,需要在末尾添加,因此完全忽略原始导航
RewriteCond %{QUERY_STRING} ^(.*)LOGIN_FLAG=(.*)$
RewriteRule ^(.*)$ http://your_domain_here.com/AuthCont?FORMSGROUP_ID__=AuthenticationFG&__START_TRAN_FLAG__=Y&FG_BUTTONS__=LOAD&ACTION.LOAD=Y&AuthenticationFG.LOGIN_FLAG=1&T_ID=ND? [L]