2012-08-10 3 views
0

다음 테스트 사례를 수행 할 ASP.NET URL 다시 쓰기 모듈에 대한 정규식이 필요합니까?ASP.NET URL 다시 쓰기 - 테스트 사례에 대해 정규식 필요

products/     products.aspx?Atts=&Page= 
products/att1/    products.aspx?Atts=att1/&Page= 
products/att1/att2/  products.aspx?Atts=att1/att2/&Page= 
products/2/    products.aspx?Atts=&Page=2 
products/att1/2/   products.aspx?Atts=att1/&Page=2 
products/att1/att2/2/  products.aspx?Atts=att1/att2/&Page=2 

아무도 도와 줄 수 있습니까?

+0

의 몇 사람이 용감 느낌 않다면 이것은 하나의 규칙에서 수행보고에 관심이있을 것 내가 언급하는 것을 잊어 버린 것들 .... 1) 그것은 후행 슬래시를 시행해야합니다. 2) URL 구조에는 "attx /"폴더가 여러 개있을 수 있습니다. –

+1

그게 당신이 찾고있는 것 같아서 얼마를 내게 그 돈을 지불 할 거니? –

+0

http://whataveyoutried.com/ – hometoast

답변

1

나는 이것을 두 가지 규칙으로 퍼지 할 수 있었다. 내가 좋아할만큼 예쁜 것은 아니지만 무엇을 할 수 있습니까?

<rule name="ProductsPagingRule" stopProcessing="false"> 
    <match url="^products([a-z0-9\-/]*)(?:/([0-9]+)/)"/> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="products{R:1}/?Page={R:2}" /> 
</rule> 

<rule name="ProductsRule" stopProcessing="true"> 
    <match url="^products/([a-z0-9\-/]*)/" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="products.aspx?PageId={R:1}" /> 
</rule> 

가 가장 가까운 내가 하나의 규칙과 함께였다 :

^products(?=(?:(?:[a-z0-9\-/]*)/([0-9]+)/$)?)(.[a-z0-9\-/]*) 

난 아직도 ...

+0

regexp 엔진에서 비 탐욕스러운 성냥이 있습니까? 그리고 오류없이 정의되지 않은 캡처를 사용할 수 있습니까? 그렇다면'^ products/((? : [a-z0-9 -] + /) *?) (? :([0-9] *) /)? $ $' 또한, 귀하의 솔루션은 귀하의 사양을 따르지 않습니다 ... – LHMathies

0

다음은 시도입니다. 이렇게하면 후행 슬래시 및 비어 있지 않은 attx 문자열이 적용됩니다. 후자가 필요하지 않은 경우 ([^/]+/)*(.*/)?으로 대체하십시오.

<rule source="products/(([^/]+/)*)([0-9]*)/$" 
     destination="products.aspx?Atts=$1&amp;Page=$3"/> 
<rule source="products/(([^/]+/)*)$" 
     destination="products.aspx?Atts=$1&amp;Page="/> 

는 (이것은 일반적으로 ASP.NET에서 사용 규칙을 재 작성 URL의 스타일이 될 것 같다, 나는 당신이 사용하고있는 모듈에 맞게 변경할 수 있습니다 확신합니다).