2009-02-12 9 views
5

Vorrei implementare un reindirizzatore di URL per DotNetNuke. Avere domande se questo è un approccio buono o possibile e qualsiasi suggerimento che altri sviluppatori potrebbero avere.Il migliore approccio di riscrittura dell'URL di DotNetNuke?

Posso aggiungere una route dinamica o statica per il reindirizzatore di URL dalla sezione 'Pagine' -> 'Aggiungi pagina'?

Diciamo che sto creando una pagina denominata "Eventi" sotto la voce di menu "Attività".

Posso scrivere un codice personalizzato in DotNetNuke che aggiungerà un prompt sulla schermata della pagina di aggiunta che presuppone che voglio aggiungere una route statica o dinamica per: site.com/Activities/Events o se chiamo la pagina 'Event Calendar 'quindi suggerire' site.com/Activities/Event-Calendar '?

Vorrei commenti o suggerimenti su come realizzerei questo! Grazie.

+0

Ottima domanda. Strano ma vero: c'è poco interesse DNN su StackOverflow, ma ce ne sono alcuni. Quale soluzione hai utilizzato? –

risposta

5

Se si utilizza DotNetNuke 4.8 o versione successiva, è sufficiente abilitare Url umanamente tramite Web.Config.

per abilitare URL amichevoli umani, sostituire:

<add name="DNNFriendlyUrl" type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9 _-]" /> 

con:

<add name="DNNFriendlyUrl" type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9 _-]" urlFormat="HumanFriendly" /> 

UPDATE: Per DNN 7.xe maggiore, questo dovrebbe ora essere:

<add name="DNNFriendlyUrl" type="DotNetNuke.Services.Url.FriendlyUrl.DNNFriendlyUrlProvider, DotNetNuke.HttpModules" includePageName="true" regexMatch="[^a-zA-Z0-9 _-]" urlFormat="advanced" /> 

Dettagli aggiuntivi: Enable Human Friendly Urls in DotNetNuke

3

check this out - dettagli qui:

http://www.ifinity.com.au/Blog/Technical_Blog/EntryId/19/Rewriting-the-DotNetNuke-Url-Rewriter-Module/

Inoltre, dare un'occhiata al modulo FriendlyUrl esistente che è già incluso in DNN.

Se si desidera eseguire questa operazione sulle pagine di riserva, è necessario aprirne la fonte o scrivere un modulo che lo faccia in modo indipendente.

+0

Questo link è un po 'datato in quanto si riferisce alla versione 1 del software che è cresciuta molto di più. Per il modulo Url Master, vedi qui http://www.ifinity.com.au/Products/Url_Master_DotNetNuke_Url_Rewriting/Features_Options Questo modulo consente anche reindirizzamenti personalizzati, 404 pagine e molto altro. Per il provider friendly URL (sostituzione dello standard DNN URL masterizzatore) vedi qui: http://www.ifinity.com.au/Products/Friendly_Url_Provider_For_DNN Questo modulo permette URL amichevole umani, ma ha anche reindirizzamenti automatici per 'vecchi' Url (con i tabid) e altre opzioni. –

+0

Nota: la roba di iFinity non sembra supportare le pagine splash per qualche motivo – NotMe

+0

Quando ho provato il pacchetto infinity, ha semplicemente reindirizzato l'url diavolo a quello non amichevole, per il resto della sessione, invece di visualizzare l'URL amichevole sempre e non lasciando che l'utente veda la versione ostile – ShaunOReilly

1

Un altro suggerimento è Page Blaster, se non si desidera scrivere il proprio codice. Funziona bene per i siti su cui lo uso.

2

Per rispondere direttamente alla domanda: sì, è possibile aggiungere del codice alla pagina Impostazioni pagina DNN. Tuttavia, modificherai il codice principale e quindi non sarai in grado di aggiornare facilmente l'installazione quando verrà rilasciata la prossima versione DNN.

Un sacco di persone vengono a DNN e vogliono scrivere un nuovo Url Rewriter. Il problema non è la riscrittura: sta ottenendo il framework DNN per generare gli URL corretti dove vorresti: nei menu, nei collegamenti generati all'interno dei moduli. Per cambiare davvero lo schema di riscrittura è necessario sostituire/aumentare la funzione di riscrittura degli URL, la funzione di generazione di url amichevole, e fornire una sorta di capacità di reindirizzamento per legare insieme vecchi e nuovi Url.

0

Molte di queste sono ottime risposte ... Una delle cose più importanti da sapere se stai imparando a conoscere DNN ora (2016 e sopra) è che il regno della riscrittura degli URL è cambiato nel tempo all'interno di DNN.

Prima, in DNN 4.8 e sotto devi utilizzare un modulo/provider esterno come: PageBlaster o DNN Masters SEO URL REWriter o iFinity URL REWriter tutti quelli sono menzionati in alcune delle risposte sopra.

Tuttavia, dopo DNN 4.9, iFinity URL ReWriter è stato incorporato nel core DNN e lo troverete disponibile in DNN 5, 6, 7 e 8 in diversi livelli di esposizione all'interfaccia. Hai ancora bisogno di fare alcuni aggiornamenti nel web.config, ma ora gran parte di questi viene fatto direttamente nelle Impostazioni della pagina.

Qualsiasi impostazione che non sia all'interno dei principali gestori, è possibile fare sia nel web.config, o nel database, oppure è possibile cercare un modulo DNN come X3 DNN Gestione URL che inserisce nei record del database di il reindirizzatore dell'URL DNN integrato e aiuta a gestire le impostazioni (è molto simile alle vecchie schermate/opzioni dell'interfaccia iFinity) ma non ne hai bisogno, puoi lavorare direttamente, è solo utile.