簡體   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