[英]Workaround issue of Helicon Ape .htaccess RewriteRule from modifying Content Type
[英]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.