2011-09-07 4 views
0

URIの条件に基づいて書き換えを実行しようとしています。要約すると、uriに文字列があり、別の文字列が含まれていない場合は、リダイレクトを実行します。私は今、エラーがありますが、これを動作させるためにいくつかの助けが必要です。mod_rewriteとrewritecond

RewriteCond %{REQUEST_URI} (.*)usb-3-hard-drive(.*) [NC] 

RewriteCond %{REQUEST_URI} !(*)start$ 

RewriteRule .* /en/manuals/usb-3-hard-drive/start [L] 

リクエストURL:http://www.domain.tld/dir1/USB-3-ハードドライブ/*

新URL:http://www.domain.tld/dir1/usb-3-hard-drive/条件が一致しない場合は、もちろん、

を開始し、その後の書き換えまだ尊重されるべきです。

ありがとう...

答えて

3

どのような種類のエラー?詳細なエラーメッセージについては、Apacheのエラーログを参照する必要があります。

いずれにせよ、私は、Apacheがの正規表現の構文がであると思われると考えています。コピーペーストでタイプミスでない場合は、エラーがここにあります:*などはありません。その前にドット.がありませんでした。おそらく!(.*)start$を意味しています。ここで

は、より最適化され、完全に ルール取り組んでいる:ところで

RewriteCond %{REQUEST_URI} /usb-3-hard-drive/ [NC] 
RewriteCond %{REQUEST_URI} !/start$ 
RewriteRule .* /en/manuals/usb-3-hard-drive/start [L] 

を - それはあなたが言及したよう「リダイレクトを実行」ではないん - それだけでないサイレントリライト(内部リダイレクト)するときURLはブラウザで変更されません。ブラウザのアドレスバーでURLが変更されたときに適切なリダイレクト(3xxコード)を使用する場合は、[L,R=301]の横に(または好きなリダイレクトコード)を[L]の横に追加します。

+0

作品!どうもありがとう。 – user933411

+0

@ user933411素晴らしい!この回答を受け入れるとマークしてください、thnx – LazyOne