【问题标题】:IIS URL Rewrite for Clean URLs干净 URL 的 IIS URL 重写
【发布时间】:2023-03-30 21:23:01
【问题描述】:

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

我最初认为这可能无法通过 URL 重写来实现,但后来我对 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>

任何帮助将不胜感激

谢谢

【问题讨论】:

    标签: iis-7 configuration url-rewriting


    【解决方案1】:

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

    相反,您可以使用可能更好的 javascript/jquery 方法。比如:

    $('a').on('click', function(ev){
        ev.preventDefault();
    
        $('body').load($(this).attr('href'));
    })
    

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

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

    它也不考虑表单提交,但您可以在其中进行处理。

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

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

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

    【讨论】:

    • 很棒的跟进@Digbyswift。我非常感谢您的帮助和彻底性。我确实知道 iframe,这是一个坏主意和 javascript,但我试图摆脱它,而无需编辑代码和只是一些 url 重写。正如您所指出的,尽管由于您在第一段中提到的问题,无论如何重写都会证明是徒劳的:) 我继承了这一点,所以我仍然需要做一些挖掘工作。它似乎是相当静态的,只有一些包含,似乎没有任何 ajax 或任何 javascript。
    • 感谢乔希,很高兴为您提供帮助。我认为在这种情况下,如果客户端特别不想要路径,则 iframe 并不是一个糟糕的解决方案。优点是如果他们改变主意,您只需删除 iframe 页面和 javascript。保持简单。
    • 是的,我想我必须同意这里,不幸的是,哈哈。另外,是的,如果他们改变主意,您是对的,所以这会有所帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多