2011-12-14 9 views
0

不幸にも私はMVC WebサイトにIIS6を使用することを余儀なくされています。 .net 4.0では、IIS6で拡張機能のないURLを取得するための愚かなハックを模倣する機能が追加されています。私のウェブサイトは、SEOの目的でURLの書き換えを利用するように設計されています。クライアントが使用したいキーワードurlは、精巧なurl書き換えスキームを指示します。MVC3 .net 4.0 extensionless urlsとisapi_rewrite

Microsoftのこの機能の迫真の問題は、実際にはURLの書き換えとパターンマッチングの試みに帰着します。私はパターンが一致するようにURLから恐ろしいeurl.axdを取り除こうとする様々なルールを見てきました。私はこれらのルールを使用しようとし

するRewriteRule ^(。)/eurl.axd/ [-f0-9] {32}()$ $ 1 $ 2 又は するRewriteRule(。)eurl.axd/。 $ 1

これは動作しますが、ネストされたリダイレクトがある場合には他の問題も発生します。新しいURLへの古いURLの処理など

eurl.axdが削除され、リダイレクト時にisapi_filterが要求を取得してIIS 404エラーが発生します。

URLの周りをつまんで、私はこの可能な解決策を思いついた。
のRewriteRule ^発電機/発電機並列能力/([^ /] )/([^ /])$ /ジェネレータ/ htmlcontent /発電並列能力/ $ 1/$ 2】【NC、L]

はeurl.axd部分をつかんで、実行URLにそれを書き換えて追加します。

良い方法がありますか?私はこのパターンに合致する数百のURLを持っており、それらをすべて単一のルールで処理するのが良いでしょう。

答えて

0

書き換えルールRewriteRule ^(.)/eurl.axd.$ $1 [NC]を使用すると、URLが複数回書き換えられたときに何らかの不一致が発生します。古いURLから新しい仮想URL、そして実際の実行URLに移動します。

マップを使用すると、非常にうまく動作し、.htaccessファイルが乱雑にならないようにパターンを作成できました。

RewriteCond ${contentmap:$2} >"" [NC] 
RewriteRule ([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /$1/${contentmap:$2}/$2/$3/$4 [NC,L] 
RewriteCond ${contentmap:$2} >"" [NC] 
RewriteRule ([^/]*)/([^/]*)$ /$1/${contentmap:$2}/$2 [NC,L] 

最初はパターン/controller/some-content/eurl.axd/1234を検出し、第二は、ちょうど最後にEURLジャンクずに同じことを行い/controller/some-controller-action/eurl.axd/1234 にそれを書き換えます。これは、私の開発マシンのiisを実行するためのものです

私は確かに良い方法があり、私は確かに良い提案に開いています。

0

我々は/eurl.axd234234

のRewriteRule ^(。)/eurl.axdをカットするために設定の上に1つの汎用ルールを使用していました。 $ $ 1 [NC]

これはルート以外のすべてで有効です。