https://mysite.com/Admin/Dashboard/DashboardReport.aspx - 这是我的实际网址,我想隐藏filename.aspx,如果有任何查询字符串值。如何?
我也尝试在IIS中重写URL中的FriendlyURL。 它没有生效。
请给我一个快速回复。
答案 0 :(得分:1)
您想使用重写规则和重写模块。
http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/
答案 1 :(得分:1)
网址重写有些含糊不清。你在改写用户看到的内容吗?或者服务器看到了什么?最好不要相信您无法更改URL显示给网站消费者的内容。
然而,诀窍是将它们发送到一个破碎的,不真实的URL ...然后为你重写URL,这样你就知道那个非真实的URL意味着什么。例如:
想象一下你有一个像这样的真实网址:
http://www.example.com/folder/subfolder/page.ext?param=value
但你想"重写" URL如下所示:
http://www.example.com/subfolder/value
如果它们位于page.ext...
页面上,则无法更改其在网址栏中看到的内容。但是,您可以将它们重定向到假路径/subfolder/value
,如下所示:
<rule name="subFolder Value Redirect">
<conditions>
<add input="{REQUEST_URI}" pattern="^/folder/([^/]+)/page\.ext\?param=([^&]+)$" />
</conditions>
<action type="Redirect" url="/{C:1}/{C:2}" />
</rule>
上面,我没有做一个&#34; url match&#34;因为我完全依赖条件。我唯一的条件是Request_URI看起来完全像我期望的那样。一些文件夹,一些子文件夹名称,page.ext和一个param = SomeValue的查询字符串。我使用()
括号来动态捕获子文件夹名称和参数值。
注意:{C:0}表示&#34; 0th&#34;捕获条件组。捕获0是正则表达式^/folder/([^/]+)/page\.ext\?param=([^&]+)$
的整个结果。 Capture 1是First Capture Group,即子文件夹名称。 Capture 2是第二个Capture Group,即param Value。
^
意味着&#34;从头开始&#34;。有时你不想从一开始就开始,那就不会在那里。
$
表示&#34;结束时#34;。有时候你不想在最后结束而且不会在那里。
角色类[^...]
表示捕获任何不是...
的角色。在这种情况下,捕获任何不是Slash的东西,或任何不是&符号的东西。
重复运算符[...]+
加号符号表示至少捕获一次前面的规则,但最多可以捕获多次。
.
是一个特殊字符,意思是&#34;任何&#34;。但我们的意思是在扩展名page.ext
的点中。所以你像\.
{REQUEST_URI}
表示在域/端口之后将您的模式与整个URL进行比较。因此,在URL http://www.example.com:1234/subfolder...
中,/子文件夹和所有以下内容都在{REQUEST_URI} EXCEPT 主题标签路由中。因此,如果你有一个Anchor或Angular UI Route,它们只停留在浏览器上,并且总是在任何重定向的末尾,但服务器永远不会看到它们,所以你不能解析主题标签。 / p>
action type="Redirect"
仅表示此操作是将用户重定向到给定的网址。
url="/{C:1}/{C:2}"
是相对于域的URL,因为它不是以协议开头的。这将重定向到/ subFolder / value,因为我们模式中的条件捕获1和条件捕获2捕获这两个值。
插入此规则后,用户将被重定向到破损的janked up URL,该URL看起来像一个State-Representative URL(RESTful)。的 Yaay !! 强>
重写适用于您(服务器),而不适用于客户。但是现在它们被重定向到一个漂亮的破损URL,你可以找到该URL的上下文,并通过为服务器重写它来告诉你的服务器它真正意味着什么。
<rule name="subFolder Value Rewrite">
<conditions><add input="{REQUEST_URI}" pattern="^/([^/]+)/([a-zA-Z0-9]+)$" /></conditions>
<action type="Rewrite" url="/folder/{C:1}/page.ext?param={C:2}" />
</rule>
这几乎与先前规则相反。这找到了一个模式,其中有一个路径&#34; subFolder&#34;名称,斜杠和由字母和数字组成的值。它再一次描述了Begginning ^
和End $
,因为我们不会期待意想不到的奇怪事情。因此,这将捕获如下的URL:
http://www.example.com/subFolder/1234abcDE
但不会抓住
http://www.example.com/lol/somethingelse/15?blah=kthx
然后,重写URL将计算回真实的实际URL,该URL映射到用于处理真正存在的文件的路径。并且,请记住,&#34;重写&#34;意味着它需要&#34;不正确&#34;用户看到的假值,并将其重写为丑陋的&#34;正确的&#34;服务器的值。不是相反。