3

リクエストの一部が255文字より短い場合に備えて、Apacheに特定の書き換えをスキップさせたい(キャッシュとLinuxの255文字のファイル名制限に関係している)。

私はこれを書いた:

RewriteCond %{QUERY_STRING} "utm_campaign" 
RewriteCond %{QUERY_STRING} "utm_medium" 
RewriteCond %{QUERY_STRING} ^(.*\/)([^\/\n]{0,255})$ 
RewriteRule .* - [S=2] 

そして、url ( q=path/to/page?utm_campaign=xxx&utm_medium=xxx) に対して正規表現をテストしたところ、一致しましたが、この後の 2 つのルールがまだ実行されているため、query_string 変数の内容が異なっているようです。一致する必要があるのはこの場合page?utm_campaign=xxx&utm_medium=xxx(およびこれ以降のすべて) です。これが 255 文字より短い場合は、次の 2 つの書き換えルールをスキップできます。

Drupal 6 を使用しています。

4

1 に答える 1

0

? の前の部分 %{QUERY_STRING} にありません (この場合、PHP の $_SERVER['QUERY_STRING'] とは対照的であるため、混乱が生じます)。 RewriteCond に %{REQUEST_URI} を追加すると、問題が解決しました。

RewriteCond %{QUERY_STRING} "utm_campaign" 
RewriteCond %{REQUEST_URI}%_{QUERY_STRING} "utm_medium" 
RewriteCond %{QUERY_STRING} ^(.*\/)([^\/\n]{0,255})$ 
RewriteRule .* - [S=2] 

答えがコメントにあるので、このソリューションに対して @Kamil Šrot のクレジットを与える方法がわかりませんか?

于 2012-12-04T14:50:31.443 に答える