0

我用 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 可以正常工作,但第二个 URL 只显示主页!!!(mysite.com/fa/Home/Index) 没有任何重定向或抛出任何错误!!!只是,显示了上面Url的内容!!!请注意,Url 不会改变!只是内容就是首页的内容!只是它!请帮帮我,我不明白为什么??????问候。

4

2 回答 2

0

您的解决方案仍然存在问题。URL 语法的官方规范明确指出,US-ASCII 范围之外的字符应采用百分比编码,因此您的旧托管公司的实现是正确的。此外,如果您的新主机不遵循此标准,那么您就有可能通过注入暴露安全漏洞。

ABNF 表示法将其终端值定义为基于 US-ASCII 编码字符集 [ASCII] 的非负整数(代码点)。因为 URI 是一个字符序列,所以我们必须颠倒这种关系才能理解 URI 语法。因此,ABNF 使用的整数值必须通过 US-ASCII 映射回其对应的字符,以完成语法规则。

URI 由一组有限的字符组成,这些字符由数字、字母和一些图形符号组成。这些字符的保留子集可用于分隔 URI 内的语法组件,而其余字符(包括未保留集和不充当分隔符的那些保留字符)定义每个组件的标识数据。

有效 URL 的 ABNF 语法位于:https ://www.rfc-editor.org/rfc/rfc3986#appendix-A

于 2012-06-06T07:16:37.683 回答
0

我自己找到答案。MVC没有任何问题!我的问题是:服务器拒绝所有在其 url 中包含非 ASCII 字符的请求!!!实际上,Web 服务器在收到包含非 ascii 字符的请求时,会以站点的缓存默认页面响应它,而不是将请求传递给应用程序!我改变了我的托管公司,我的问题得到了解决。谢谢大家, 问候

于 2011-07-09T22:27:21.003 回答