通常,我使用 .htaccess 中的简单规则将我的网站部署在带有 Apache ModRewrite 的服务器上,将带有 www 的地址重定向到不带 www 的地址:www.example.com => example.com
我目前正在使用 IIS + UrlRewrite 在带有 Windows 的服务器上部署网站。在我实现重定向设置的 web.config 文件中,我有以下规则来删除 www 地址:
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:1}" redirectType="Permanent" />
</rule>
通过浏览器,重定向完美!但是一些外部工具,例如 Facebook 和 Google+1 按钮,在重定向规则处于活动状态时
不起作用。
例如,Google+1 按钮点击它时出错(在申请中点击按钮我可以看到错误:“code”:-32099,“message”:“Backend Error”)。
在尝试使用以下工具分析带有 www 地址的网站时,Facebook 已经意识到问题:http: //developers.facebook.com/tools/debug
Facebook 错误:URL Parsing Error: Error parsing the URL typed, no data was collected.
禁用重定向后,Google+1 按钮和 Facebook 的分析工具可以完美运行。
注意:原则上不通知本站,因为我想留下一个禁用的规则来寻找解决方案。如果有必要通知链接,我将编辑此问题。
编辑: 经过一些测试,无论是否启用了规则,我的 +1 按钮问题仍在继续。我在 Google Code 上找到了一个关于相同问题的线程,但不明白应该怎么做:
该问题只发生在绑定到该站点上。我创建了一个带有两个 +1 按钮的测试页面,一个指向站点,一个指向 Stackoverflow。通过单击按钮 Stackoverflow 工作,但不是另一个: