我正在尝试设置IIS 8网站。我想忽略输入的url的最后一个目录,但不要删除它而只是忽略它。目录名称可以是任何内容
说明
该网站有一个名为/stores
的目录,该目录有一个完整的网站。
该网站将使用URL中不存在的目录/somename
来正确呈现网站。
如果我输入https://mywebsite.com/stores/somestore
显然我会得到404 Not Found
因为目录somestore
在stores
中不存在
我如何编写IIS规则来忽略不存在的URL目录的最后一部分,但也将其保存在URL中,以便PHP可以使用它来正确呈现页面。
有点像Facebook,通过将/profilename
添加到URL来访问配置文件。
注意:由于某些技术冲突,我无法使用URL参数。
随意更新这个问题标题,我不确定它是否完全正确。
基本上,如果您在文件夹/问题之后立即查看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>