2016-11-02 8 views
0

WindowsサーバーでHelicon Apeを使用してhtaccessファイルを作成しています。htaccess(Helicon Ape)から括弧を削除します。

元々、より大きな条件セットの一部で、urlが含まれていれば403を返すように設定されていました。しかし、それが終わるmailchimpトラッキングコードの場合には偽陽性の原因となっているが、以下のURL

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

、例えば()

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

に包まれたばかり代わりに、私はかっこを削除しようとしていたし、 "クリーンなバージョン"にリダイレクトしていました。

私は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] 

:あなたは、次のルールを使用することができます

答えて

1

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

ありがとうございます。しかし、それは問題を引き起こすほど特殊すぎる。 RULEでのREQUEST_URIの使用を見てから実用的な解決策を考え出しました – imvain2

1

を@starkeenの例を使用して、私は実用的なソリューションを作成することができました。

このコードは、URLとは別のクエリ文字列を処理します。 URLを消去しますが、クエリ文字列は削除されます。

RewriteCond %{REQUEST_URI} [\(\)]+ 

RewriteRule ^(.*)[\(]+([^\)]*)[\)]+(.*)$ $1$2$3 [R=301,L] 

RewriteCond %{QUERY_STRING} [\(\)]+ 

RewriteRule^%{REQUEST_URI}? [R=301,L] 
関連する問題