質問

私は、製品やカテゴリのURLの書き換えをいくつかの基本的なURLを行うにはUmbracoでUrlRewritingNetを使用しています。すべては私のローカルマシン(のVisual Studio DEV-Webサーバ)上で、当社の社内開発サーバ(ISS 7でウィンドウServer 2008の、32ビット)に罰金です。しかし、それは、IIS 7(64ビット)を持つウィンドウサーバー2008 R2で本番サーバー上で失敗します。症状は、書き換えルールがトリガされていないということです。サーバは単に私に404エラーを与えます。

このような書き換えルールルックスます:

<add name="CategoryRewrite"
     virtualUrl="^/products/(.*)/(.*).aspx"
     rewriteUrlParameter="ExcludeFromClientQueryString"
     destinationUrl="~/default.aspx?umbPage=1&amp;maincategory=$1&amp;subcategory=$2"
     ignoreCase="true"/>

次のようなURLのルックス - このしない作品ます:

http://example.net/products/category+name/sub+category.aspx
私は、次のURLを変更する場合は、

それはすべての3つの環境で動作します:

http://example.net/products/category%20name/sub%20category.aspx

+は空白文字に使用されている場合virtualUrl属性で正規表現が失敗したことは明らかです。しかし、私は正規表現は、Windows 2008 R2サーバーに障害が発生した理由を私は把握することができますことを、認めなければならない。

私は、Windows Server 2008 R2および他の2つの環境の間でどのような違いの洞察を探しています。私は何を望みでしょうか?

私はSystem.Web.RegularExpressions.dllは、サーバー上の同じバージョンであることを確認しています。

役に立ちましたか?

解決

問題がIIS7要求フィルタは、+文字を含むURLを拒否することです。解決策は、あなたに以下を追加するWeb.configでます:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering allowDoubleEscaping="true" />
  </security>
 </system.webServer>
</configuration> 

詳細は:ます。http: //blogs.iis.net/thomad/archive/2007/12/17/iis7-rejecting-urls-containing.aspxする

同僚は、彼自身のIISでWebサイトを実行するために、明るいアイデアを得ました。そして、誤差はさらに404.11と定義され、そこからソリューションに単純なものでした。

ました

他のヒント

あなたの正規表現はまた、「+」の文字に一致するため、それは私には奇妙に思えます。たぶん、問題は、使用している文字列の先頭の正規表現の最初の文字、「^」です。たぶん、本番サーバー上で、あなたは絶対URLを取得し、あなたのdevの環境サーバ上の相対URL書き換えモジュールに渡されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top