2016-08-31 5 views
0

RewriteMapを使用してリライトテキストファイル内でパターンマッチングを行いたいと思っていますが、動作していないようです。以下はApacheの設定です。RewriteMapテキストファイルのパターンマッチング

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteLog "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/apache1.log" 
RewriteLogLevel 5 
RewriteMap lowercase int:tolower 
RewriteMap escape int:escape 
RewriteMap sitelevel_external "txt:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/html1/content/dam/redirect.txt" 
RewriteCond %{REQUEST_URI} ^(.*)$ 
RewriteCond ${lowercase:%1} ^(.*)$ 
RewriteCond ${escape:%1} ^(.*)$ 
RewriteCond ${sitelevel_external:%1|NOT_FOUND} !NOT_FOUND 
RewriteRule ^(.*) ${sitelevel_external:%1} [QSA,NC,NE,L,R=301,E=nocache:1] 

私はURL http://localhost/delivery-delay.htmlを使用する場合は3番目のルールがそこにあるときにredirect.txtファイルの内容が

^/delivery-delay.html$ http://www.yahoo.com // doesn't work 
/delivery-delay.html$ http://www.yahoo.com // doesn't work 
/delivery-delay.html http://www.yahoo.com // Works 

あり、ヤフーへのリダイレクトのみ発生します。最初の2つの条件がある場合、Apacheはリダイレクトせず404をスローします。標準のプレーンテキスト(sitelevel_external)で

Apache Logs attached

+0

あなたの設定を見ると、Apache 2.2が正しくインストールされていますか? – freedev

+0

はいそれはApache 2.2です –

答えて

0

あなたは正規表現を扱うことができないファイル、テキストファイルだけで、キーマップに変換されます。

RewriteMapはさまざまな種類の一致を処理しますが、テキストファイルを使用する場合は完全に一致するものを探すことができます。 、External Rewriting Programがあなたのニーズに合わせ、注意を払い、それをシンプルに保つことができるかもしれ

「このプログラムがハングした場合、それは、関連する書き換えルールを使用し しようとするとApacheがハングアップする原因となります。」

関連する問題