IIS 8 Url 重写为忽略目录

IIS 8 Url Rewrite to Ignore Directory

我正在尝试设置 IIS 8 网站。我想忽略输入 url 的最后一个目录,但不想删除它,而是忽略它。目录名可以是任何东西

解释

网站 URL:https://mywebsite.com

该站点有一个名为/stores的目录,里面有一个完整的网站。
该网站将使用 URL 中的 non-existent 目录 /somename 来正确呈现网站。

如果我输入 https://mywebsite.com/stores/somestore 显然我会得到 404 Not Found 因为目录 somestorestores

中不存在

我如何编写一个 IIS 规则来忽略 URL 目录中不存在的最后一部分,同时将其保留在 URL 中以便 PHP 以正确呈现页面。

有点像 Facebook,通过将 /profilename 添加到 URL 即可访问个人资料。

注意: 由于一些技术冲突,我不能为此使用 URL 参数。

随时更新这个问题的标题,我不确定它是否完全正确。

Basically if you look at the address bar on Whosebug right now after the folder /questions there is a supposedly directory named ThisQuestionsId (55762513). But in the actual server is there a folder with that name? I assume not. I want to know how this is achieved.

至于如果你想通过IISurl重写实现类似Whosebug的url格式

我建议你可以参考下面的规则。

它将重写 https://mywebsite.com/question/55553 to https://mywebsite.com/question.php?id=55553

这意味着您可以将 question.php 页面中的逻辑写入 select 数据并根据查询字符串 id 的值显示它。

  <rewrite>
    <rules>
                <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                    <match url="^question/([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="question.php?id={R:1}" />
                </rule>

    </rules>
  </rewrite>