我确定这是一个简单的问题,但我注意到当我在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中的一个设置.
有两件事会导致这种行为.
我想你是在共享主机托管多个网站.
要摆脱这个问题,您需要进入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
祝你好运:-)