2013-02-11 64 views
5

即使URL重写为:http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/,我也无法删除我网站的URL。即使使用URL重写,IIS强制也会删除它

令人沮丧,因为它应该是如此简单,但我的尝试没有产生任何结果。

我甚至还创建了一个测试目录,并添加了名为desktops.aspx和名为desktops的子文件夹。

没有子目录“/ test/desktops”加载正常,因为我设置了默认文件来查看desktops.aspx。

与创建的子文件夹仍然引用“/测试/桌面”它强制斜杠和看着子目录。

为什么IIS会这样做,因为它应该首先查找文件,然后子目录是否正确?服务器端是否有任何设置会强制回斜杠?

URL重写段:

<rule name="SEO - Remove trailing slash" stopProcessing="false"> 
<match url="(.+)/$" /> 
<conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
<add input="{HTTP_METHOD}" pattern="GET" /> 
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
</conditions> 
<action type="Rewrite" url="_{R:1}" /> 
</rule> 

任何帮助将受到欢迎

回答

4

您正在使用Rewrite类型的动作,但你想有一个Redirect

更改您的配置是:

<rule name="SEO - Remove trailing slash" stopProcessing="false"> 
    <match url="(.*)/$" /> 
    <conditions> 
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
    </conditions> 
    <action type="Redirect" url="{R:1}" /> 
</rule> 

你也需要改变url="(.+)/$"url="(.*)/$"

提示:

来测试你的模式,最好的办法是使用IIS测试图形工具。
在您的网站的根目录 - > URL重写 - >创建一个空白规则 - >点击测试模式:

+0

有道理。谢谢!我实际上一直在尝试使用其他所有规则的重定向,但忘了在这一个上检查它。 无论如何,我按照您的指示更新了规则,但我仍然被重定向到斜线。这是目前唯一使用的规则。 /test/desktops重定向到/ test/desktops/ – fseminario 2013-02-11 20:08:59

+0

我犯了一个错误,您应该使用'(。*)/ $'作为模式(请参阅我的更新回答)。我应该遵循我自己的建议... :) – cheesemacfly 2013-02-11 20:17:22

+0

呵呵。疑难杂症。我已更新,但仍无法使用。斜线被强制回来。 – fseminario 2013-02-11 20:32:28

0

被链接到PDF文件中有尾随斜杠我有问题,我在Windows所以什么工作Server 2008 R2中运行IIS 6.1:

单击需要的规则,并在Features视图中打开了URL Rewrite,然后在Actions部分(右窗格)选择Add Rule(s)并选择Append or Remove the trailing slash symbol在网站上。在下拉窗口中选择remove if exists

希望这会有所帮助。

0

我有这个相同的问题,这里是我发现的。

我的意图是要使用此规则的MVC网站上,但我没有想在生产测试,所以我测试的网站上已经建立的正好是网页形式asp.net的规则。

我遇到了和你一样的问题。即使规则已到位,也可以访问www.example.com/test重定向到www.example.com/test/。

所以我注意到条件来检查请求的url是一个文件或目录,我删除它们。

现在访问www.example.com/test/重定向到www.example.com/test。好极了!不。IIS自动将另一个重定向添加到www.example.com/test/,导致重定向循环。嘘。

然后我发现这篇文章https://support.microsoft.com/en-us/kb/298408它涉及IIS 6,但显然仍然是一个问题。

因此,因为我在一个asp.net web表单站点,在我的情况下/ test是一个物理目录,并且IIS中有一些强制目录的尾部斜杠。很遗憾地说,但我找不到方法来轻松关闭它。

但是!我的要求是MVC和配置的路线不是目录。所以我在MVC网站上再次尝试了它,并且重定向删除了尾部的斜线,效果很好。

我结束了的规则是:

<rule name="RemoveDatSlash" stopProcessing="true"> 
    <match url="(.*)/$" /> 
    <conditions> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    </conditions> 
    <action type="Redirect" redirectType="Permanent" url="{R:1}" /> 
</rule> 

希望这有助于!