IIS 8 Url重写以忽略目录

IIS 8 Url重写以忽略目录,url,iis,url-rewriting,url-routing,iis-8,Url,Iis,Url Rewriting,Url Routing,Iis 8,我正在尝试设置IIS 8网站。我想忽略键入的url的最后一个目录,但不是删除它,而是忽略它。目录名可以是任何名称 解释 网站网址: 该站点有一个名为/stores的目录,其中包含一个完整的网站 网站将使用URL中不存在的目录/somename,以正确呈现网站 如果我输入https://mywebsite.com/stores/somestore显然,我将得到404未找到,因为stores中不存在目录somestore 如何编写IIS规则来忽略URL目录中不存在的最后一部分,但同时将其保留在URL

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

解释

网站网址:

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

如果我输入
https://mywebsite.com/stores/somestore
显然,我将得到
404未找到
,因为
stores中不存在目录
somestore

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

有点像Facebook,通过在URL中添加
/profilename
来访问个人资料

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

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

基本上,如果您现在查看stackoverflow上的地址栏,在文件夹/questions之后,有一个假定的名为ThisQuestionsId(55762513)的目录。但是在实际的服务器中是否有同名的文件夹?我想不会吧。我想知道这是如何实现的

如果您希望通过使用IIS url重写来实现类似stackoverflow的url格式

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

它将重写

这意味着您可以在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>


我仍然无法清楚地理解您的要求。在我看来,如果你不想显示404错误页面,你可以定义一个自定义的404错误页面。如果服务器想要返回404错误,您可以显示自己的404 php页面,而不是默认的404页面。@BrandoZhang不,我不是说自定义404页面。基本上,如果您现在查看stackoverflow上的地址栏,在文件夹
/questions
之后,应该有一个名为
ThisQuestionsId
(55762513)的目录。但是在实际的服务器中是否有同名的文件夹?我想不会吧。我想知道这是如何实现的。你的答案似乎只适用于一个文件,你知道为什么根路径中的其他内容没有被包括在内,比如图像、css和javascript,它们似乎没有显示出来吗?在仔细研究你的答案后,你稍微解决了问题。谢谢