请帮助我构建我的网站[日文版]使用重写模块它工作得很好并且很好地重写我的URL但是当我插入日语数据时它不会重写我的URL并获得[错误的请求]错误。
注意如果网站数据是英文,则效果不错。
更新
这是我的可重写webconfig代码的示例
<rewrite url="~/Seightseeing/(.+)/(.+).aspx" to="~/ExcursionsDetails.aspx?packageId=$1"/>
<rewrite url="~/LocalExperience/(.+)/(.+).aspx" to="~/ExcursionsDetails.aspx?packageId=$1"/>
<rewrite url="~/ShoreExcursions/(.+)/(.+).aspx" to="~/ExcursionsDetails.aspx?packageId=$1"/>
我认为[错误请求]错误的原因是Url可能有特殊字符,尽管GenerateURLMethod包含清除特殊字符的部分 我发布了以下方法
public static string GenerateURL(object Title, object strId)
{
string strTitle = Title.ToString();
#region Generate SEO Friendly URL based on Title
//Trim Start and End Spaces.
strTitle = strTitle.Trim();
//Trim "-" Hyphen
strTitle = strTitle.Trim('-');
strTitle = strTitle.ToLower();
char[] chars = @"$%#@!*?;:~`+=()[]{}|\'<>,/^&"".".ToCharArray();
strTitle = strTitle.Replace("c#", "C-Sharp");
strTitle = strTitle.Replace("vb.net", "VB-Net");
strTitle = strTitle.Replace("asp.net", "Asp-Net");
//Replace . with - hyphen
strTitle = strTitle.Replace(".", "-");
//Replace Special-Characters
for (int i = 0; i < chars.Length; i++)
{
string strChar = chars.GetValue(i).ToString();
if (strTitle.Contains(strChar))
{
strTitle = strTitle.Replace(strChar, string.Empty);
}
}
//Replace all spaces with one "-" hyphen
strTitle = strTitle.Replace(" ", "-");
//Replace multiple "-" hyphen with single "-" hyphen.
strTitle = strTitle.Replace("--", "-");
strTitle = strTitle.Replace("---", "-");
strTitle = strTitle.Replace("----", "-");
strTitle = strTitle.Replace("-----", "-");
strTitle = strTitle.Replace("----", "-");
strTitle = strTitle.Replace("---", "-");
strTitle = strTitle.Replace("--", "-");
//Run the code again...
//Trim Start and End Spaces.
strTitle = strTitle.Trim();
//Trim "-" Hyphen
strTitle = strTitle.Trim('-');
#endregion
//Append ID at the end of SEO Friendly URL
strTitle = "~/Seightseeing/" + strId + "/" + strTitle + ".aspx";
return strTitle;
}
答案 0 :(得分:0)
我不知道你提供的代码有什么问题。您使用的是哪个URL重写模块?您是否检查了GenerateURL方法(Title,strId)的输入参数以验证是否传入了正确的值?我可以看到此方法生成无效的网址,例如,如果您传入“http://xyz.com”,则//Replace Special-Characters
下的代码会删除://
部分。
您确定正确使用该模块吗?我在web.config(<rewrite url="~/Seightseeing/(.+)/(.+).aspx"...>
)中定义重写模板,然后在//Append ID at the end of SEO Friendly URL
下的GenerateURL方法中再次定义它,这似乎很奇怪。
另外,我注意到//Replace multiple "-" hyphen with single "-" hyphen
下的代码看起来很有趣。这是一个更优雅的版本:
while (strTitle.Contains("--"))
strTitle = strTitle.Replace("--", "-");