我们目前正在使用共享主机来节省成本。我们在共享主机上的虚拟目录(/ app和/ public)下托管我们的公共网站和SaaS产品。我们为我们的客户提供虚荣子域(即client1.myproduct.com),因此我们有一些重写规则可以使一切正常运行。
对实际问题有点不确定,但我们如何设置它是因为HTTP_HOST参数不是以www开头,如果子域不为空,那么我们重定向到/ app,否则我们显示在根
但是,相对URL会出现问题。例如,
~/Scripts/jQuery.js
解析为
/app/Scripts/jQuery.js
但是由于重写规则,您实际上是通过
导航到脚本/Scripts/jQuery.js
显然,我可以将所有网址更改为绝对网址(例如/Scripts/jQuery.js
而不是~/Scripts/jQuery.js
),但这显然是次优的。
看起来像ResolveUrl
这样的函数使用TemplateSourceDirectory
来解析相对URL。是否有可能在某处覆盖它的价值?有没有更好的处理方法,我错过了?
答案 0 :(得分:1)
布拉德,
如果不知道您使用什么来重写网址,就很难回答。在过去,人们倾向于使用应用程序的web.config中定义的东西,这些东西处理过早期的ISAPI驱动程序操作。
例如,Helicon的ISAPIRewrite很早就发生了,而IIS7的最新URL重写在稍后的处理过程中发生。
这也有助于查看您的实际重写规则,包括它们的条件,要匹配的正则表达式模式以及要输出的重写模式。
那就是说,除非我过分简化,否则你不能简单地检测URL何时以波形符“〜”作为前缀并在之前的规则中删除它。 (将该规则标记为继续执行其余规则)
然后,当您处理下一个规则时,它会使用以“/".
开头的相对URL模式进行处理如果我错过了某些内容,请告诉我,如果有,请提供我上面提到的信息。