繁体   English   中英

从htaccess中删除括号(Helicon Ape)

[英]Remove parenthesis from htaccess (Helicon Ape)

我在Windows Server上使用Helicon Ape创建htaccess文件。

最初,这是一组较大条件的一部分,如果url中包含(),则我将此条件设置为返回403。 但是,如果mailchimp跟踪代码最终被包裹在()中,则会导致误报

 RewriteCond %{QUERY_STRING} ^.*(\\[|\\]|\\(|\\)|<|>).* [NC,OR] 

例如在下面的URL中

http://domain.com/page/11/page-name?ct=t(Newsletter_Tracking)

作为替代方案,我试图删除括号并重定向到“清理后的版本”。

我尝试了一些在SO中发现的不同方法,但没有任何效果。

到目前为止,我可以开始工作的最接近的东西是:

 RewriteCond %{REQUEST_URI} [\\(\\)]+ [OR] RewriteCond %{QUERY_STRING} [\\(\\)]+ RewriteRule ^(.*)[\\(]+([^\\)]*)[\\)]+(.*)$ $1$2$3 [R=301,L] 

上面的代码的问题是,如果()在URL中而不在查询字符串中,则该代码可以工作。 它不会重定向和清理查询字符串。

这样就可以了: http : //domain.com/page/11/pag(e-name)

但这不会: http : //domain.com/page/11/page-name?ct=t(Newsletter_Tracking)

感谢您的协助

谢谢。

您可以使用以下规则:

RewriteCond %{THE_REQUEST} /page/11/page-name\?ct=t\(Newsletter_Tracking\)\sHTTP [NC]
RewriteRule ^  %{REQUEST_URI}? [L,R]

如果查询字符串是动态的,请尝试:

RewriteCond %{THE_REQUEST} /page/11/page-name\?ct=.+\(.+\)\sHTTP [NC]
RewriteRule ^  %{REQUEST_URI}? [L,R]

使用@starkeen的示例,我能够创建一个可行的解决方案。

此代码处理与URL分开的查询字符串。 它清除URL,但删除查询字符串。

 RewriteCond %{REQUEST_URI} [\\(\\)]+ RewriteRule ^(.*)[\\(]+([^\\)]*)[\\)]+(.*)$ $1$2$3 [R=301,L] RewriteCond %{QUERY_STRING} [\\(\\)]+ RewriteRule ^ %{REQUEST_URI}? [R=301,L] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM