我用2种语言编写MVC 3应用程序:en和fa;为了优化搜索引擎的Url,我在Urls中使用页面标题,就像这样(2个页面中的一页):
mysite.com/en/Home/Sheet/2/my-presentation-page
mysite.com/fa/Home/Sheet/2/صفحه-معرفی-من
,路线图是:
{lang}/{controller}/{action}/{id}/{uriTitle}
在本地,这确实有效,但当我在互联网上传时,第一个Url正常工作,但第二个只显示主页! (mysite.com/fa/Home/Index)没有任何重定向或抛出任何错误!只是,显示上面的Url的内容! 请注意,Url不会更改!只是内容是主页的内容!只是它! 请帮帮我,我不明白为什么?????? 问候。
答案 0 :(得分:0)
我自己找到答案。 MVC没有任何问题!我的问题是这样的: 服务器拒绝其网址中包含非ASCII字符的所有请求!实际上,Web服务器在收到包含非ascii字符的请求时,会使用网站的缓存默认页面来响应它,而不是将请求传递给应用程序! 我改变我的托管公司,我的问题解决了。 感谢所有人,问候
答案 1 :(得分:0)
您的解决方案仍然存在问题。 URL语法的官方规范明确指出US-ASCII范围之外的字符应该是百分比编码的,因此您的旧托管公司的实现使其正确。此外,如果您的新主机不符合此标准,那么您可能会通过注入暴露安全漏洞。
ABNF表示法将其终值定义为非负值 基于US-ASCII编码字符集的整数(代码点) [ASCII]。因为URI是一系列字符,所以我们必须反转 该关系是为了理解URI语法。因此, ABNF使用的整数值必须映射回它们的 通过US-ASCII对应的字符以完成语法 规则。 URI由一组有限的字符组成 数字,字母和一些图形符号。保留的子集 这些字符可用于分隔a中的语法组件 URI同时剩下的字符,包括两个未保留的字符集 和那些不作为分隔符的保留字符定义每个 组件的识别数据。
有效网址的ABNF语法位于:http://tools.ietf.org/html/rfc3986#appendix-A