我想为DotNetNuke实现一个URL重写器。对于这是一个好的或可能的方法以及其他开发人员可能提出的任何建议有疑问。
我可以从“页面” - >中为URL重写器添加动态或静态路由吗? “添加页面”部分?
假设我在“活动”菜单项下创建了一个名为“活动”的页面。
我可以在DotNetNuke中编写一些自定义代码,它会在添加页面屏幕上添加一个提示,假定我想要添加静态或动态路由 - site.com/Activities/Events或者如果我命名页面'事件日历'然后它会建议'site.com/Activities/Event-Calendar'?
我想就如何实现这一目标提出任何反馈或建议!谢谢。
答案 0 :(得分:5)
如果您使用的是DotNetNuke 4.8或更高版本,则只需通过Web.Config启用Human Friendly Urls。
要启用人性友好网址,请替换:
<add name="DNNFriendlyUrl" type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9 _-]" />
使用:
<add name="DNNFriendlyUrl" type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9 _-]" urlFormat="HumanFriendly" />
更新: 对于DNN 7.x及更高版本,现在应该是:
<add name="DNNFriendlyUrl" type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9 _-]" urlFormat="advanced" />
答案 1 :(得分:3)
检查一下 - 详情请点击此处:
另外,请查看已包含在DNN中的现有FriendlyUrl模块。
如果你想在股票页面上这样做,你需要破解它的来源,或者写一个独立完成这个的模块。
答案 2 :(得分:2)
直接回答您的问题:是的,您可以在DNN页面设置页面添加一些代码。但是,您将修改核心代码,因此在下一个DNN版本发布时无法轻松升级您的安装。
很多人来到DNN,想写一个新的Url Rewriter。问题不在于重写:它正在让DNN框架生成您希望它们的正确URL - 在菜单中,在模块中生成的链接中。要真正更改重写方案,您需要替换/扩充Url重写功能,友好的网址生成功能,并提供某种重定向功能,以便将新旧网址绑定在一起。
答案 3 :(得分:1)
另一个建议是Page Blaster,如果您不希望编写自己的代码。适用于我使用它的网站。
答案 4 :(得分:0)
其中有几个是很好的回复......如果你现在(2016年及以上)刚刚学习DNN,最重要的事情之一是URL重写领域在DNN内随着时间的推移而发生变化。
之前,在DNN 4.8及以下版本中,您必须使用外部模块/提供商,例如: PageBlaster或 DNN Masters SEO URL REWriter或 iFinity URL REWriter 所有这些都在上面的一些答案中提到过。
然而,在DNN 4.9之后,iFinity URL ReWriter被纳入DNN核心,你会发现它在DNN 5,6,7和8中以不同的接口暴露水平可用。您仍然需要在web.config中进行一些更新,但其中大部分都是直接在“页面设置”中完成的。
任何不在主管理器中的设置,您可以在web.config或数据库中执行,或者您可以查找DNN模块,例如X3 DNN URL Management,它可以访问数据库的数据库记录。集成DNN网址重写器并帮助管理设置(它与旧的iFinity界面屏幕/选项非常相似)但你不需要它,你可以直接工作,它只是有用。