重定向太多,间歇性问题 - 怀疑重写缓存

时间:2017-01-15 13:43:33

标签: iis iis-8 url-rewrite-module

环境 Windows Server 2012 R2 64位 IIS 8 Plesk 12.5

运行WordPress的网站会间歇性地响应太多重定向,但仅针对特定网址,仅响应约30分钟。之后,请求的页面按预期提供。网站的其余部分使用相同的重写规则在整个时间内正确响应。

特别是一个URL比其他URL受到的影响更大。可能需要注意的是,它在网站主页上有特色,并且正在通过社交渠道推送。

失败的请求跟踪显示特定URL的以下内容:

URL_REWRITE_START RequestURL / category / referendum-2 /

REDIRECT_FROM_CACHE_ACTION CachedRedirectedURL http:// www.website.com/category/referendum-2/ RedirectType Permanent

URL_REWRITE_END RequestURL http://www.website.com/category/referendum-2/

这显然是无限重定向循环的开始。

正确提供网址时失败的请求跟踪显示:

URL_REWRITE_END RequestURL /index.php

这显然对于WordPress是正确的,/ index.php处理所有前端页面请求。

如果将查询字符串添加到请求的URL,例如。 / category / referendum-2 /?key = value IIS正确提供所请求的页面。因此我怀疑查询字符串会导致IIS跳过重写缓存,这意味着缓存会导致重定向循环。

我在https://blogs.msdn.microsoft.com/danielvl/2010/01/07/registry-values-for-iis-url-rewrite/看到了帖子,详细说明了如何通过注册表禁用重写缓存,但注册表项HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ InetStp \ Rewrite不存在。我并不热衷于创建密钥以查看生产环境中发生的情况。

任何人都可以建议我的怀疑是否重演。重写缓存是重定向循环的原因是正确的吗?

如果是,我该如何解决问题?我很难找到有关重定向缓存的任何细节,或者可能导致这样的行为。

由于

1 个答案:

答案 0 :(得分:0)

通过向重定向规则添加一个条件来解决问题,该规则负责使用无法缓存的参数来调用无限重定向循环,从而避免缓存。



<rule name="Imported Rule 2" stopProcessing="true">
	<match url=".*" ignoreCase="false" />
	<conditions logicalGrouping="MatchAll">
		<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
		<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
	</conditions>
	<action type="Rewrite" url="index.php" />
</rule>
&#13;
&#13;
&#13;

已更改为

&#13;
&#13;
<rule name="Imported Rule 2" stopProcessing="true">
	<match url=".*" ignoreCase="false" />
	<conditions logicalGrouping="MatchAll">
		<add input="{REMOTE_PORT}" pattern=".*" />
		<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
		<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
	</conditions>
	<action type="Rewrite" url="index.php" />
</rule>
&#13;
&#13;
&#13;

更好的解决方案可能是更新applicationHost.config中的frequentHitThreshold和frequentHitTimePeriod。有关详细信息,请参阅http://www.ckode.dk/server-configuration/tuning-iis-7-for-static-content/