2012-03-21 27 views
1

私は、ファイル拡張子を削除するために完全に機能するURL書き換えを行っています。しかし、response.redirectを使用すると、URLの書き換えは行われません。奇妙なことに、これは、URLが相対パスではなく完全パスを使用している場合にのみ発生します。たとえば:URL書き換えルールとSSL証明書を使用したドメイン間のresponse.redirect

response.redirect("http://example.com/page") 

response.redirect("/page")が細かいhttp://example.com/page.asp

のに対し、私に与えます。

URL書き換えコード:

<rule name="rewrite asp"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAll"> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{REQUEST_FILENAME}" negate="true" pattern="(.*).asp" /> 
    </conditions> 
    <action type="Rewrite" url="{R:1}.asp" /> 
</rule> 

私は、私は1つのドメインから別のつもりですので、完全なパスを使用する必要があります。何か案は?

その後、
/redirect?url=<%=Server.URLEncode("http://example.com/page.asp")%> 

redirect.aspで:あなたは多分このような何か試すことができます

+0

DOH、申し訳ありませんが、それはだServer.Transferの –

+0

は確かにああ、ええ、私は試したこと1、それうまくいかなかった。 – greener

+0

最後に、クエリ文字列を追加してみてください。 'response.redirect( "http://example.com/page/?test=1")' –

答えて

0

<%sSomeExternalURL = URLDecode(Request.QueryString("url"))%> 
<html> 
<head> 
    <meta http-equiv="refresh" content="0;url=<%=sSomeExternalURL%>"> 
</head> 
<body> 
</body> 
</html> 

<% 
Function URLDecode(str) 
    str = Replace(str, "+", " ") 
    For i = 1 To Len(str) 
     sT = Mid(str, i, 1) 
     If sT = "%" Then 
      If i+2 < Len(str) Then 
       sR = sR & _ 
        Chr(CLng("&H" & Mid(str, i+1, 2))) 
       i = i+2 
      End If 
     Else 
      sR = sR & sT 
     End If 
    Next 
    URLDecode = sR 
End Function 
%> 
+0

問題は私の質問で正しくレイアウトされていませんでした。ありがとう。 – greener

+0

あなたは精巧にお考えですか?私は助けることができてうれしいですが、私は他の人がその解決策が何であるか知りたいと思うかもしれないと確信しています。 –

+0

私はこれが何らかの効果を持つとは考えていませんでしたが、リダイレクトされるドメインにはSSL証明書があります。したがって、そのための書き換えルールもあります。この問題は、最終的に 'https:// example.com/page'にリダイレクトすることで解決されました。 – greener

関連する問題