IIS URL重写干净的URL

时间:2013-08-08 16:13:22

标签: iis-7 configuration url-rewriting

我正在使用IIS的网站上工作。我有它正在努力删除扩展,但后来我被告知客户端是在尾随斜杠后删除的所有内容。

我首先想到这可能无法通过URL Rewrite实现,但我再一次对IIS知之甚少。

基本上,如果有人浏览网站并点击内部网页,则网址应保持不变,即顶级域名。

http://www.example.com代替http://www.example.com/whatever

这是我到目前为止删除扩展程序。

<rule name="Remove PHP Extension">
    <match url="(.*)\.php" />
    <action type="Rewrite" url="{R:1}" />
</rule>
<rule name="Remove PHP Extension">
    <match url=".*" negate="false" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
        </conditions>
    <action type="Rewrite" url="{R:0}.php" />
</rule>

非常感谢任何帮助

由于

1 个答案:

答案 0 :(得分:0)

通过IIS执行此操作可能很困难,因为每个链接实际上必须在第一个实例中将用户导航到页面。然后你就被卡住了,除非你然后重定向到主页然后根据推荐人执行重写 - 这有点疯了。

相反,您可以使用javascript / jquery方法,这可能会更好。类似的东西:

$('a').on('click', function(ev){
    ev.preventDefault();

    $('body').load($(this).attr('href'));
})

这会占用任何锚并覆盖它,以确保内容被加载到当前页面。

不可否认,这是没有对href指向页面ID等的任何条件检查,并且在考虑您可能已经拥有ajax调用时也不尽如人意。

它也没有考虑表单提交,但你可以在这里工作。

另一个问题是如果有人直接导航到某个页面会发生什么。

最后一种方法是将整个网站加载到Iframe中。令人讨厌,但如果这是客户想要的效果,则应用。你可以在每个页面上使用一些javascript来强制自己进入iframe,如果它还没有。

无论您采取哪种方法,您的客户都可以与任何搜索排名亲吻。这提醒我,不要忘记在你的robots.txt

中禁止所有