0

我在 azure 上有一个网站,我正在尝试为我的网站使用一些用户友好的 url。

我已经下载了 IIS 远程管理器,并按照此处的说明进行操作。虽然文章是从 2008 年开始的,但远程 IIS 管理器的 GUI 还是几乎一样。

在定义了重写映射和查看映射内部的规则之后,这是生成的 web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
            <rewriteMaps>
                <rewriteMap name="StaticRewrites">
                    <add key="/niceurlpart" value="/Menu/master/#/Menu?Token=7926983e-c64e-4547-85f5-d85e3c06c7a8" />
                </rewriteMap>
            </rewriteMaps>
            <rules>
                <rule name="Rewrite rule1 for StaticRewrites" patternSyntax="ExactMatch">
                    <match url=".*" />
                    <conditions>
                        <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
                    </conditions>
                    <action type="Rewrite" url="{C:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

当我在地址栏中输入时:mydomain.com/niceurlpart 我得到:“您要查找的资源已被删除、名称已更改或暂时不可用。”

此外,当我尝试在远程 IIS 管理器中测试模式时,它失败了..

我错过了什么吗?

4

1 回答 1

0

不确定在 web.config 中执行此操作的语法,但 URL 的 # 部分不会到达服务器,因此在您的规则中使用它是行不通的。

如果您使用 angular 类型的应用程序并使用 # 进行路由,请尝试使用 HTML5 模式,这将摆脱散列。

如果您追求 SEO,您可以通过 google '_escaped_fragment_' 将哈希值发送到您的服务器。此外,如果 SEO 是您的目标,那么我们使用 _escaped_fragment_ 以及此工具https://prerender.io

于 2015-08-27T02:24:59.020 回答