我有一个托管在临时服务器上的应用程序。如果我通过提供我的凭据来使用我的应用程序,我可以打开URL => http://mysite.com
。
但是,如果我将网址更改为http://www.mysite.com
,网站会再次显示登录页面以请求凭据(我刚刚提供的)。
现在在登台服务器上,如果我在地址栏中输入http://mysite.com
,我会收到http://mysite.com
。但是当我在地址栏中输入google.com时,我会被带到http://www.google.com
。这是怎么回事?
我的问题是:当我的应用程序上线并输入mysite.com
时,网址会转换为http://www.mysite.com
还是我需要做一些事情才能将网址转换为包含www
的网址}?
答案 0 :(得分:6)
您需要设置转发器以将www
子域转发到根域。
以下是一些方法:
答案 1 :(得分:3)
如果您无法执行Skilldrick建议的任何网址重写方法,则需要配置身份验证模块以使用正确的共享域Cookie。
如果您使用的是表单身份验证,则可以在web.config中实现:
<forms name="name"
loginUrl="URL"
defaultUrl="URL"
domain=".example.com">
</forms>
注意域中的前导期 - 这会编写一个可以从example.com和www.example.com读取的身份验证cookie,这意味着您现在将登录该站点的两个变体。
话虽如此,Skilldrick提供的最后一个例子很好用,并且在你的网站上实现应该相当简单。
答案 2 :(得分:1)
您似乎要问几个不同的问题:
首先关闭 - 为什么在输入http://www.google.com
时获得http://google.com
:
这是因为谷歌正在服务器端进行重定向,因此所有前往http://google.com
的人都以http://www.google.com
/
您也可以通过将每次调用重定向到http://www.mysite.com
到http://mysite.com
来执行相同操作。
这可以通过使用Response.Redirect
方法,使用URL重写模块或多种方式中的任何一种来实现。
答案 3 :(得分:0)
可以通过多种方式处理从一个URL到另一个URL的重定向。一对夫妇是:
元素刷新标记,托管在http://mysite.com,其中包含以下内容:
<meta http-equiv="refresh" content="1;url=http://www.mysite.com">
网址重写,例如Apache(http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html和http://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也可能也是如此。