URL或域/ AppName中的重复域

Gar*_*lie 4 asp.net-mvc-3

我确定这是一个简单的问题,但我注意到当我在GoDaddy上托管(共享主机)网站时,URL会重复应用程序名称.

例如,我有http://makedifferences.org,如果我去了它的罚款,但如果我点击一个链接它会带我到http://makedifferences.org/makedifferences/ ...

它不仅仅是这一个网站,它是我在GoDaddy上的所有网站,我认为在我的其他地方托管的网站上可能是相同的,但我现在无法检查它们.

我没有使用Web部署来部署它,因为我首先想到的是它必须做IIS.我的猜测是它必须是发布设置中的一个设置,但我玩它们并且似乎无法让它消失.

任何意见,将不胜感激.谢谢,加勒特

更新

这显然不是一个mvc的事情,因为我检查我在dotnet-host.com托管的网站,它没有这个问题.所以我想这是我在Godaddy的设置.

我删除了该文件夹并设置了一个虚拟文件夹,但这并没有解决问题.

我有多个站点托管通过他们和我的域名A记录是我的所有站点的专用IP,然后在主机的域管理我将域名指向该站点所在的文件夹.

我认为这是正确的方法,但我不确定.

为了重申我的问题,我现在对它有了更多了解,如果我输入http://makedifferences.org/Charities/Details/3页面加载,一切都很完美.但是,如果我点击主页上的链接去那里,网址是http://makedifferences.org/makedifferences/Charities/Details/3

谢谢,为什么我认为它是Visual Studio中的一个设置.

Pan*_*yay 5

有两件事会导致这种行为.

  • 您的应用程序安装在共享主机的文件夹而不是根目录中.
  • 您的DNS设置将域名指向此文件夹.

我想你是在共享主机托管多个网站.

要摆脱这个问题,您需要进入IIS设置并将这些文件夹设置为虚拟目录.....或者为每个网站创建一个....然后在该文件夹中安装您的应用程序.

UPDATE

这实际上不是与GoDaddy共享托管相关的问题,而是在虚拟目录中托管ASP.NET MVC站点的问题.当您使用GoDaddy提供的共享主机时,您将通过虚拟目录获得根文件夹和无限子文件夹,每个子文件夹都可以是其自己的域.不幸的是,MVC的路由引擎生成的URL将包含附加到域名的虚拟目录名称.

例如,假设您有一个名为http://www.example.com的域,而您的文件夹/虚拟目录名称是/ File.如果您在不进行任何修改的情况下进行MVC模板项目并将其上传到您的文件夹然后转到您的网址,一切都会好起来的.您会注意到页面右上角的"主页"和"关于"标签.当您单击"关于"选项卡时,由于它被路由到主页控制器的"关于"操作,因此您可以正确地期望该URL为www.example.com/Home/About.但是,您将看到,ActionLink方法生成的URL包含虚拟目录的名称.因此,该网址为www.example.com/File/Home/About.

要解决此问题,请将以下代码添加到Web.config的 system.webServer元素中

<rewrite>
    <rules>
        <rule name="Remove Virtual Directory">
            <match url=".*" />
            <action type="Rewrite" url="{R:0}" />
        </rule>
    </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)

寻求解决方案来自HERE

祝你好运:-)