【问题标题】:Issue with http:// and http://wwwhttp:// 和 http://www 的问题
【发布时间】:2010-01-14 09:54:54
【问题描述】:

我有一个托管在登台服务器上的应用程序。如果我通过提供凭据来使用我的应用程序,我可以打开 URL => http://mysite.com

但是,如果我将 url 更改为 http://www.mysite.com,该站点会再次显示登录页面以请求凭据(我刚刚提供)。

现在在登台服务器上,如果我在地址栏中输入http://mysite.com,我会被发送到http://mysite.com。但是当我在地址栏中输入 google.com 时,我会转到http://www.google.com。这是怎么回事?

我的问题是:当我的应用程序上线并且我输入 mysite.com 时,该 url 会被转换为 http://www.mysite.com 还是我需要做一些事情来将 url 转换为包含 www 的一个?

【问题讨论】:

    标签: asp.net .net iis dns


    【解决方案1】:

    您需要设置一个转发器将www子域转发到根域。

    这里有几种方法:

    【讨论】:

    • 我使用与上一个选项非常相似的方法在各个站点上执行此操作。
    • 我的 IIS 是 6.0 在这种情况下我可以使用 URL Rewriter 吗?
    【解决方案2】:

    如果您无法执行Skilldrick 推荐的任何 URL 重写方法,那么您将需要配置您的身份验证模块以使用正确的共享域 cookie。

    如果您使用 Forms 身份验证,这可以在 web.config 中实现:

    <forms name="name" 
           loginUrl="URL" 
           defaultUrl="URL"
           domain=".example.com">
    </forms>
    

    注意域中的前导句点 - 这会写入一个可从 example.com 和 www.example.com 读取的身份验证 cookie,这意味着您现在将登录该站点的两个变体。

    话虽如此,Skilldrick 提供的最后一个示例运行良好,并且对于您在您的网站上实施应该相当简单。

    【讨论】:

    • 好的..让我试试这个。在此之前让我提出一个疑问..name="name" 是什么,这表示什么? loginurl和default url是一样的吗?
    【解决方案3】:

    您似乎在问几个不同的问题:

    首先 - 为什么你在输入 http://google.com 时得到 http://www.google.com

    这是因为 google 在服务器端进行重定向,所以每个去http://google.com 的人最终都会在http://www.google.com/

    您也可以这样做,将每个呼叫重定向到 http://www.mysite.comhttp://mysite.com

    这可以通过使用Response.Redirect 方法、使用URL 重写模块或多种方式中的任何一种来实现。

    【讨论】:

    • 我不会发出 Response.Redirect 因为它只会发出临时重定向 (302),而且有些搜索引擎不喜欢其中的很多,最好使用产生 301 的方法永久重定向,如上一个示例 Skilldrick (stackoverflow.com/questions/2063293/…) 提供的。
    • 如果我以任何网站为例,75% 的网站都添加 www 作为前缀。我想知道是不是所有的东西都在后面的代码中处理,还是可以通过 IIS 中的一些技巧来实现?
    • 他们中的许多人只注册了带有 www 前缀的域,因此尝试转到非 www 将失败。其他人不做任何类型的重定向,两者都可以工作。
    【解决方案4】:

    可以通过多种方式处理从一个 URL 到另一个 URL 的重定向。一对夫妇是:

    1. 元刷新标签,托管在http://mysite.com,包含以下内容:

      <meta http-equiv="refresh" content="1;url=http://www.mysite.com">
      
    2. URL 重写,例如使用 Apache(http://httpd.apache.org/docs/2.2/mod/mod_rewrite.htmlhttp://www.widexl.com/tutorials/mod_rewrite.html 可能是值得一看的地方):

      RewriteEngine On
      RewriteCond %{HTTP_HOST} !^www.mysite.com$ [NC]
      RewriteRule ^(.*)$ http://www.mysite.com/$1 [R,L]
      

      这将用于外部重定向 (HTTP 302) 任何与 www.mysite.com 不匹配的主机到 http://www.mysite.com。 IIS 也可能实现同样的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2018-09-26
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多