我想为 DotNetNuke 实现一个 URL 重写器。对这是否是一种好的或可能的方法以及其他开发人员可能有的任何建议有疑问。
我可以从“页面”->“添加页面”部分为 URL 重写器添加动态或静态路由吗?
假设我正在“活动”菜单项下创建一个名为“事件”的页面。
我可以在 DotNetNuke 中编写一些自定义代码吗会建议“site.com/Activities/Event-Calendar”吗?
我想要任何关于我将如何完成此任务的反馈或建议!谢谢你。
我想为 DotNetNuke 实现一个 URL 重写器。对这是否是一种好的或可能的方法以及其他开发人员可能有的任何建议有疑问。
我可以从“页面”->“添加页面”部分为 URL 重写器添加动态或静态路由吗?
假设我正在“活动”菜单项下创建一个名为“事件”的页面。
我可以在 DotNetNuke 中编写一些自定义代码吗会建议“site.com/Activities/Event-Calendar”吗?
我想要任何关于我将如何完成此任务的反馈或建议!谢谢你。
如果您使用的是 DotNetNuke 4.8 或更高版本,您只需通过 Web.Config 启用 Human Friendly Urls。
要启用人类友好的 url,请替换:
<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" />
看看这个 - 细节在这里:
此外,请查看 DNN 中已包含的现有 FriendlyUrl 模块。
如果您想在股票页面上执行此操作,您需要打开它的源代码,或者编写一个独立执行此操作的模块。
要直接回答您的问题:是的,您可以在 DNN 页面设置页面中添加一些代码。但是,您将修改核心代码,因此在下一个 DNN 版本发布时将无法轻松升级您的安装。
很多人来到 DNN 并想写一个新的 Url Rewriter。问题不在于重写:它让 DNN 框架在您想要的位置生成正确的 url - 在菜单中,在模块内生成的链接中。要真正改变重写方案,您需要替换/增加 Url Rewriting 功能,友好的 url 生成功能,并提供某种重定向功能,以便将新旧 Url 联系在一起。
如果您不想编写自己的代码,另一个建议是Page Blaster 。适用于我使用它的网站。
其中有几个是很好的回复......如果您现在(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 url 的数据库记录重写器并帮助管理设置(它与旧的 iFinity 界面屏幕/选项非常相似)但您不需要它,您可以直接工作,它只是有帮助。