0

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

我首先认为这可能无法通过 URL Rewrite 实现,但我又对 IIS 不太了解。

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

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>

任何帮助将不胜感激

谢谢

4

1 回答 1

0

通过 IIS 执行此操作可能很困难,因为每个链接实际上必须首先将用户导航到该页面。然后你就卡住了,除非你然后重定向到主页,然后根据引用者执行重写——这有点疯狂。

相反,您可以使用可能更好的 javascript/jquery 方法。就像是:

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

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

这将采用任何锚点并覆盖它,以确保将内容加载到当前页面中。

诚然,这对href指向页面 id 等没有任何条件检查,并且在考虑到您可能已经在该站点中进行了 ajax 调用时也不足。

它也没有考虑表单提交,但你可以这样做。

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

最后一种方法是将整个站点加载到 iframe 中。如果那是客户想要的效果,那很糟糕但很合适。如果还没有的话,你可以在每个页面上都有一些 javascript 强制自己进入 iframe。

无论您采用哪种方法,您的客户都可以告别任何搜索排名。这提醒了我,不要忘记在你的 robots.txt 中禁止所有内容

于 2013-08-08T18:33:11.130 回答