【问题标题】:Standard link on two different servers - different behaviour两个不同服务器上的标准链接 - 不同的行为
【发布时间】:2012-10-30 21:49:31
【问题描述】:

我找不到更好的标题,但我希望它有意义。

我有两台 Windows 服务器:

  1. 共享主机,将我的测试站点托管在子域 (test.domain.com) 上。 Windows Server 2008 R2
  2. 带有 Windows Server 2008 的云服务器。我有 IIS 访问权限

在我的第一个案例中,我刚刚使用 FTP 上传了应用程序。在我的第二种情况下,我“像往常一样”设置了 IIS。

在我的内容中,我有几个链接,它们的格式如下:

<a href="Mylink/">Text</a>

MyLink 指向使用 URL 路由的页面。但是,假设链接在某个子页面上,例如 domain.com/MySubpage,就会发生这种情况:

服务器 2 的行为:

domain.com/MySubpage/MyLink/

服务器 1 的行为:

domain.com/MyLink/

问题是,我需要我的云服务器上服务器 1 的行为。我的数据库中有很多文章,我不能轻易更改链接,所以必须有一些简单的方法来设置行为 1?

我该如何解决这个问题?

【问题讨论】:

  • 您可以在页面加载时动态修复链接。在服务器端,或 javascript。
  • 但是如果服务器1有我需要的行为,不就是一些服务器设置吗?与开箱即用的 #1 相比,动态修复链接的性能似乎相当沉重:)
  • 我认为这是你的情况stackoverflow.com/questions/4415716/…

标签: asp.net html iis hyperlink relative-path


【解决方案1】:

看来,作为URL Anri posted,问题在于如何处理网址。服务器 #1 认为它不是字典,而 #2 认为它是字典。

我将此代码添加到我的 web.config 中,一切都解决了:

 <rewrite>
      <rules>

        <!--To always remove trailing slash from the URL-->
        <rule name="Remove trailing slash" 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>
      </rules>
    </rewrite>

出于 SEO 的原因,我无论如何都想要这种行为,它没有任何不幸的问题。

【讨论】:

    猜你喜欢
    • 2011-12-16
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多