我们有需要通过firstname.lastname访问的销售代表个人资料页面。因此,示例网址为www.mysite.com/mark.handy。这个重定向到Find-A-Rep-Detail.aspx?SalesRepWebID = mark.handy。
我们目前正在建立一个大型复杂网址Rewrite,它会查看扩展程序并从那里开始。它可以工作,但意味着我们需要在IIS或跨多个服务器的web.config中管理它。
我正在寻找一种在kentico中做到这一点的方法。我知道社区网站的个人资料页面似乎占用了用户的firstname.aspx并重定向到个人资料页面。
kentico解决方案必须检查URL以及扩展名是否与列表(aspx,html,js,css,asmx等)匹配,然后重定向。
这里是踢球者。我们的用户数据不在kentico中。我们有一个.asps页面,它有一个用户控件来获取名称并返回html。
我正在查看通配符网址文档:https://docs.kentico.com/k9/configuring-kentico/configuring-page-urls/wildcard-urls
这在Kentico中是否可行,或者我们应该坚持使用iis / web.config选项吗?
答案 0 :(得分:1)
由于Kentico通配符URL文档状态:
如果您需要在用户名中允许使用点并使用通配符URL 用户名同时将页面URL中的通配符移动到 URL的中间位置,例如:/ Members / {UserName} / Profile
如果这不是一个选项,那么" firstname.lastname"模式必须是URL的最后一部分,一种可能的方法是使用RequestEvents.Begin
全局事件来检测" firstname.lastname"模式,并重定向到适当的页面。
假设您使用的是Kentico 10:
[assembly: RegisterModule(typeof(SalesRepRedirector))]
public class SalesRepRedirector : Module
{
private static readonly Regex SalesRepRegex = new Regex(@"^\/([a-zA-Z]+\.[a-zA-Z]+)$");
public SalesRepRedirector() : base("SalesRepRedirector") { }
protected override void OnInit()
{
RequestEvents.Begin.Execute += Begin_Execute;
}
private static void Begin_Execute(object sender, EventArgs e)
{
var relativePath = RequestContext.CurrentRelativePath;
var regexMatch = SalesRepRegex.Match(relativePath);
if (regexMatch.Success)
URLHelper.Redirect("~/Find-A-Rep-Detail.aspx?SalesRepWebID=" + regexMatch.Groups[1].Value);
}
}
(将文件放在App_Code文件夹中,或放在单独的程序集中)
有些注意事项:
答案 1 :(得分:0)
我认为你可以在Kentico内完成这项任务。请注意,我只是在这里提供一个概念证明,还没有测试或创建任何东西。
在主页中添加别名(假设这是网站的根目录),因此它接受带有用户名的无效网址。像/{UsersID}
这样的东西。然后使用javascript webpart,您可以检查{?UsersID?}
url参数并将它们重定向到/ Find-A-Rep页面。您甚至可以更进一步,在Find-A-Rep页面上添加相同的别名/Find-A-Rep/{UsersID}
,然后您可以使用更友好的URL /Find-A-Rep/Mark.Handy
,如果需要,仍然可以使用该查询字符串参数代码。
答案 2 :(得分:0)
我做了一个快速测试,它排序有效但不是100%你想要的方式,因为你不能使用“。”在通配符URL中。
您可以在模板中创建模板Find-A-Rep-Detail.aspx,使用{?名字?}和{? lastname?}来获取值。 然后在URLs属性中,将路径或模式设置为/ {firstname} - {lastname}。如果你使用。而不是 - ,它将被替换为 -
因此,通过直接获取Find-A-Rep-Detail.aspx模板将显示通配符URL / john-smith,您可以获得名字和姓氏。
对于通配符URL,一个重要的是正确的模式,如果没有前缀且模式只是/ {somehting},那么像/ aboutus这样的常规页面就会遇到麻烦。
答案 3 :(得分:0)
您好我知道这可能是列出所有潜在网址的手动方法,但是您是否考虑过使用Kentico的这个网址重定向模块 - http://devnet.kentico.com/articles/url-redirection? 您可以在Kentico中列出所有“从”和“到”的网址