1

URL(DotNetNuke Friendly URL)を次のように書き換えたい:

出発地:/search.aspx?query=test到着地:~/SearchResults?search=test

さまざまな組み合わせを試しましたが、疑問符の後のURLの部分が考慮されていないようです

  <RewriterRule>
      <LookFor>.*/search.aspx?query=(.+)</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
  </RewriterRule>

しかし、それは動作しません..

私が試してみました:

  <RewriterRule>
      <LookFor>.*/search.aspx\?query=(.+)</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
  </RewriterRule>

しかし、これは url に対しても機能しません/search.aspx?query=test。search.aspx で 404 が返される

これは、DotNetNuke の web.config の関連部分です。

<friendlyUrl defaultProvider="DNNFriendlyUrl">
  <providers>
    <clear />
    <add name="DNNFriendlyUrl"
         type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" 
         includePageName="true" 
         regexMatch="[^a-zA-Z0-9 _-]" 
         urlFormat="humanfriendly" />
  </providers>
</friendlyUrl>

スキップする原因は何かありますか?

これは、使いやすい URL リライターのソース コードです。

https://dotnetnuke.codeplex.com/SourceControl/latest#Trunk/Content/Community/HttpModules/UrlRewrite/UrlRewriteModule.cs

4

2 に答える 2

5
.*/search.aspx\?query=(.+)

? をエスケープする必要があります。\ は正規表現キーワードであるため

于 2013-07-03T04:45:27.003 に答える
0

疑問符は「\?」でエスケープする必要があります。

    <RewriterRule>
      <LookFor>.*/search.aspx\?query=(.+)$</LookFor>
      <SendTo>~/SearchResults?Search=$1</SendTo>
    </RewriterRule>
于 2013-07-03T04:50:16.227 に答える