IIS 8 Url重写以忽略目录

问题描述 投票:2回答:1

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

说明

网站网址:https://mywebsite.com

该网站有一个名为/stores的目录,该目录有一个完整的网站。 该网站将使用URL中不存在的目录/somename来正确呈现网站。

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

我如何编写IIS规则来忽略不存在的URL目录的最后一部分,但也将其保存在URL中,以便PHP可以使用它来正确呈现页面。

有点像Facebook,通过将/profilename添加到URL来访问配置文件。

注意:由于某些技术冲突,我无法使用URL参数。

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

url iis url-rewriting url-routing iis-8
1个回答
1
投票

基本上,如果您在文件夹/问题之后立即查看stackoverflow上的地址栏,则会有一个名为ThisQuestionsId(55762513)的假定目录。但在实际的服务器中是否有一个具有该名称的文件夹?我假设没有。我想知道这是如何实现的。

至于你想通过使用IIS url重写来实现像stackoverflow这样的url格式。

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

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

这意味着你可以在question.php页面中编写逻辑来选择数据并根据查询字符串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>
© www.soinside.com 2019 - 2024. All rights reserved.