<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MyLifeBBS &#187; DotNetNuke</title>
	<atom:link href="http://www.mylifebbs.com/tag/dotnetnuke/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mylifebbs.com</link>
	<description>The World without Boundaries</description>
	<lastBuildDate>Sat, 05 Jun 2010 14:17:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Show DNN Module in Another Module&#8217;s Generated Page.</title>
		<link>http://www.mylifebbs.com/2009/12/show-dnn-module-in-another-modules-generated-page/</link>
		<comments>http://www.mylifebbs.com/2009/12/show-dnn-module-in-another-modules-generated-page/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 01:34:20 +0000</pubDate>
		<dc:creator>George</dc:creator>
				<category><![CDATA[DotNetNuke]]></category>
		<category><![CDATA[Request URL]]></category>
		<category><![CDATA[Show Module only specific page]]></category>

		<guid isPermaLink="false">http://www.mylifebbs.com/2009/12/show-dnn-module-in-another-modules-generated-page/</guid>
		<description><![CDATA[One of the greatest feature of DotNetNuke is to allow use to show the module in the page they like based on the viewer’s role and permission. However, this only apply to DotNetNuke generated pages. So, how about showing a module only in a page that is generated by Blog Module for example?
The solution is [...]


Related posts:<ol><li><a href='http://www.mylifebbs.com/2009/01/dotnetnuke-custom-error-page-404-page-not-found-redirection/' rel='bookmark' title='Permanent Link: DotNetNuke Custom Error Page, 404 Page Not Found Redirection'>DotNetNuke Custom Error Page, 404 Page Not Found Redirection</a></li>
<li><a href='http://www.mylifebbs.com/2010/01/guide-to-implement-re-captcha-in-dotnetnuke-modules-without-touching-the-source-code/' rel='bookmark' title='Permanent Link: Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.'>Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.</a></li>
<li><a href='http://www.mylifebbs.com/2009/05/making-dotnetnuke-logo-link-seo-friendly/' rel='bookmark' title='Permanent Link: Making DotNetNuke Logo Link SEO Friendly!'>Making DotNetNuke Logo Link SEO Friendly!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>One of the greatest feature of DotNetNuke is to allow use to show the module in the page they like based on the viewer’s role and permission. However, this only apply to DotNetNuke generated pages. So, how about showing a module only in a page that is generated by Blog Module for example?</p>
<p>The solution is simple, all you need to do is add the following lines into your skin.ascx file:</p>
<p> <span id="more-282"></span>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&lt;% <span style="color: #0000ff">If</span> Regex.IsMatch (Request.URL.ToString, <span style="color: #006080">&quot;REGEX HERE&quot;</span>) <span style="color: #0000ff">Then</span> %&gt;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&lt;div id=<span style="color: #006080">&quot;ExtraPane&quot;</span> runat=<span style="color: #006080">&quot;server&quot;</span>&gt;&lt;/div&gt;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&lt;% <span style="color: #0000ff">End</span> <span style="color: #0000ff">If</span> %&gt;</pre>
</p></div>
</div>
<p>The idea is to show a module pane only when a specific page is called. In the above example, we use ASP.NET Regex to match with the requested URL with the self defined Regex value “REGEX HERE”.</p>
<p>Using Ventrian’s Article Module for example, the default URL of a Article Page looks something like this:<br />
  <br /><em>http://www.example.com/NewsArticles/tabid/218/articleType/<strong>ArticleView</strong>/articleId/384/Example-Page.aspx</em></p>
<p>In the url above, we can easily identify the unique parameter of the module’s generated url: <em><strong>ArticleView, </strong></em>we use this as the Regex filter and replace it with&#160; “REGEX HERE” and you have this:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&lt;% <span style="color: #0000ff">If</span> Regex.IsMatch (Request.URL.ToString, <span style="color: #006080">&quot;ArticleView&quot;</span>) <span style="color: #0000ff">Then</span> %&gt;</pre>
</p></div>
</div>
<p>If you worry you might have the word “ArticleView” word in other pages’ URL, you could put a longer regex value to filter it:&#160; &amp;tabid=218&amp;ArticleView=</p>
<p><strong>Important Note:</strong> The “Request.URL.ToString” calls the raw url which looks like this:</p>
<p><em>Default.aspx?TabId=88&amp;ArticleView=</em></p>
<p><strong></strong></p>
<p>Thus, your Regex Value must match with the raw url and not the Human Friendly Url that you see in the web browser.</p>
<p>If you do not know the raw url of the module generated page’s url, you could add this into your skin file to find it out:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&lt;!-- &lt;%= Request.URL.ToString %&gt; --&gt;</pre>
</p></div>
</div>
<p>Note: &lt;!&#8211;&#160;&#160; &#8211;&gt; is added so that it will not show in the normal view but you can see it via browser’s view page source function. This is to avoid interference in production site.</p>
<p>For a live demonstration, you can see this page:<br />
  <br /><em>http://www.goeatout.com.my/Restaurants/Promotions.aspx</em> and</p>
<p><em>http://www.goeatout.com.my/Restaurants/Promotions/Details/View/PID/31315/Hong-La-Qiao-Restaurant-Steamboat-Buffet.aspx</em></p>
<p>In the second link, a module “More Related Dining Promotions” is added at the page bottom which only shows in the page with “PID” in the URL but not in any of it’s parent page <em>/Promotions/</em></p>
<p>For advanced combination, you could add “AND” in the code:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&lt;% <span style="color: #0000ff">If</span> Regex.IsMatch (Request.URL.ToString, <span style="color: #006080">&quot;REGEX HERE&quot;</span>) <span style="color: #0000ff">AND</span> DotNetNuke.Security.PortalSecurity.IsInRoles(PortalSettings.AdministratorRoleName) <span style="color: #0000ff">Then</span> %&gt;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        &lt;div id=<span style="color: #006080">&quot;ExtraPane&quot;</span> runat=<span style="color: #006080">&quot;server&quot;</span>&gt;&lt;/div&gt;</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&lt;% <span style="color: #0000ff">End</span> <span style="color: #0000ff">If</span> %&gt;</pre>
</p></div>
</div>
<p>In the example above, it will show the extra pane only if the request url is match with your regex and the viewer has administrator role.</p>
<p>Have fun^^</p>


<p>Related posts:<ol><li><a href='http://www.mylifebbs.com/2009/01/dotnetnuke-custom-error-page-404-page-not-found-redirection/' rel='bookmark' title='Permanent Link: DotNetNuke Custom Error Page, 404 Page Not Found Redirection'>DotNetNuke Custom Error Page, 404 Page Not Found Redirection</a></li>
<li><a href='http://www.mylifebbs.com/2010/01/guide-to-implement-re-captcha-in-dotnetnuke-modules-without-touching-the-source-code/' rel='bookmark' title='Permanent Link: Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.'>Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.</a></li>
<li><a href='http://www.mylifebbs.com/2009/05/making-dotnetnuke-logo-link-seo-friendly/' rel='bookmark' title='Permanent Link: Making DotNetNuke Logo Link SEO Friendly!'>Making DotNetNuke Logo Link SEO Friendly!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mylifebbs.com/2009/12/show-dnn-module-in-another-modules-generated-page/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to Modify Ventrian Property Agent</title>
		<link>http://www.mylifebbs.com/2009/10/how-to-modify-ventrian-property-agent/</link>
		<comments>http://www.mylifebbs.com/2009/10/how-to-modify-ventrian-property-agent/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 10:17:50 +0000</pubDate>
		<dc:creator>inspiron64</dc:creator>
				<category><![CDATA[DotNetNuke]]></category>
		<category><![CDATA[ventrian property agent]]></category>

		<guid isPermaLink="false">http://www.mylifebbs.com/?p=253</guid>
		<description><![CDATA[
If you&#8217;re using Dotnetnuke and Ventrian Property Agent to build your webpage, sure you like to know how can modify ventrian PA by yourself.
Before we start to modify Ventrian PA Module, you need to download the File below:


Dotnetnuke version 4.x or 5.x


Ventrian Property Agent Install 	File and Source File (Any Version)


First, Install a Dotnetnuke in [...]


Related posts:<ol><li><a href='http://www.mylifebbs.com/2009/03/changing-ventrian-property-agent-lightbox-buttons/' rel='bookmark' title='Permanent Link: Changing Ventrian Property Agent LightBox Buttons'>Changing Ventrian Property Agent LightBox Buttons</a></li>
<li><a href='http://www.mylifebbs.com/2009/03/how-to-modify-dotnetnuke-login-page-the-easy-way/' rel='bookmark' title='Permanent Link: How to modify DotNetNuke Login Page? The Easy Way.'>How to modify DotNetNuke Login Page? The Easy Way.</a></li>
<li><a href='http://www.mylifebbs.com/2010/01/guide-to-implement-re-captcha-in-dotnetnuke-modules-without-touching-the-source-code/' rel='bookmark' title='Permanent Link: Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.'>Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } --></p>
<p style="margin-bottom: 0in">If you&#8217;re using Dotnetnuke and Ventrian Property Agent to build your webpage, sure you like to know how can modify ventrian PA by yourself.</p>
<p style="margin-bottom: 0in">Before we start to modify Ventrian PA Module, you need to download the File below:<span id="more-253"></span></p>
<ol>
<li>
<p style="margin-bottom: 0in">Dotnetnuke version 4.x or 5.x</p>
</li>
<li>
<p style="margin-bottom: 0in">Ventrian Property Agent Install 	File and Source File (Any Version)</p>
</li>
</ol>
<p style="margin-bottom: 0in">First, Install a Dotnetnuke in your Localhost. You can download the Dotnentuke from <a href="http://www.dotnetnuke.com/">http://www.dotnetnuke.com</a><a href="http://www.dotnetnuke.com/"><span style="text-decoration: none"> </span></a></p>
<p style="margin-bottom: 0in">After install Dotnetnuke, open your Website and install the Ventrian Property Agent using the Install File that you download. When you finish install the Ventrian PA Module, try to import a template on it and fill in a new property after import a new template. Template can be downloaded from <a href="http://www.ventrian.com/">http://www.ventrian.com</a></p>
<p style="margin-bottom: 0in">Ok. When all of this have been done, unzip the Ventrian Property Agent Source File. Copy and Paste all the files on it to the Ventrian PA that you installed. Normally the Folder will be on C:\Inetpub\wwwroot\(your DNN name)\DesktopModules\PropertyAgent</p>
<p style="margin-bottom: 0in">Open the folder and find a file which name “Ventrian.PropertyAgent.vbproj”. Open it with Notepad, and scroll to bottom. You will see a line which  like</p>
<p style="margin-bottom: 0in">&lt;IISUrl&gt;<a href="http://localhost/DotNetNuke455/DesktopModules/PropertyAgent">http://localhost/DotNetNuke455/DesktopModules/PropertyAgent</a>&lt;/IISUrl&gt;</p>
<p style="margin-bottom: 0in">
<p style="margin-bottom: 0in">Change it to</p>
<p style="margin-bottom: 0in">&lt;IISUrl&gt;<a href="http://localhost/%28your">http://localhost/(your</a> DNN name)/DesktopModules/PropertyAgent&lt;/IISUrl&gt;</p>
<p style="margin-bottom: 0in">AND</p>
<p style="margin-bottom: 0in">&lt;IISAppRootUrl&gt;<a href="http://localhost/DotNetNuke455">http://localhost/DotNetNuke455</a>&lt;/IISAppRootUrl&gt;</p>
<p style="margin-bottom: 0in">Change it to</p>
<p style="margin-bottom: 0in">&lt;IISAppRootUrl&gt;<a href="http://localhost/%28your">http://localhost/(your</a> DNN name)&lt;/IISAppRootUrl&gt;</p>
<p style="margin-bottom: 0in">
<p style="margin-bottom: 0in">All done. Now can open the Ventrian PA project with Microsoft Visual Web Developer.</p>


<p>Related posts:<ol><li><a href='http://www.mylifebbs.com/2009/03/changing-ventrian-property-agent-lightbox-buttons/' rel='bookmark' title='Permanent Link: Changing Ventrian Property Agent LightBox Buttons'>Changing Ventrian Property Agent LightBox Buttons</a></li>
<li><a href='http://www.mylifebbs.com/2009/03/how-to-modify-dotnetnuke-login-page-the-easy-way/' rel='bookmark' title='Permanent Link: How to modify DotNetNuke Login Page? The Easy Way.'>How to modify DotNetNuke Login Page? The Easy Way.</a></li>
<li><a href='http://www.mylifebbs.com/2010/01/guide-to-implement-re-captcha-in-dotnetnuke-modules-without-touching-the-source-code/' rel='bookmark' title='Permanent Link: Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.'>Guide to implement re-Captcha in DotNetNuke Modules without touching the source code.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mylifebbs.com/2009/10/how-to-modify-ventrian-property-agent/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DotNetNuke Custom Error Page, 404 Page Not Found Redirection</title>
		<link>http://www.mylifebbs.com/2009/01/dotnetnuke-custom-error-page-404-page-not-found-redirection/</link>
		<comments>http://www.mylifebbs.com/2009/01/dotnetnuke-custom-error-page-404-page-not-found-redirection/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 14:31:00 +0000</pubDate>
		<dc:creator>Oracle9</dc:creator>
				<category><![CDATA[DotNetNuke]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Teachings]]></category>

		<guid isPermaLink="false">http://www.mylifebbs.com/2009/01/dotnetnuke-custom-error-page-404-page-not-found-redirection/</guid>
		<description><![CDATA[Often, DotNetNuke users never bother about URL issues which actually has a great impact on SEO especially your site is very old which has many old links from other websites and you have too much content to manage.
Even which the URL rewriter module like URL Master from ifinity or PageBlaster Module, they still have their [...]


Related posts:<ol><li><a href='http://www.mylifebbs.com/2009/05/making-dotnetnuke-logo-link-seo-friendly/' rel='bookmark' title='Permanent Link: Making DotNetNuke Logo Link SEO Friendly!'>Making DotNetNuke Logo Link SEO Friendly!</a></li>
<li><a href='http://www.mylifebbs.com/2009/03/how-to-modify-dotnetnuke-login-page-the-easy-way/' rel='bookmark' title='Permanent Link: How to modify DotNetNuke Login Page? The Easy Way.'>How to modify DotNetNuke Login Page? The Easy Way.</a></li>
<li><a href='http://www.mylifebbs.com/2009/10/best-free-javascript-and-css-compressor-to-optimized-your-website/' rel='bookmark' title='Permanent Link: Best Free JavaScript and CSS Compressor to Optimized your Website.'>Best Free JavaScript and CSS Compressor to Optimized your Website.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div>Often, DotNetNuke users never bother about URL issues which actually has a great impact on SEO especially your site is very old which has many old links from other websites and you have too much content to manage.</p>
<p>Even which the URL rewriter module like URL Master from ifinity or PageBlaster Module, they still have their limitation. Here, I&#8217;m going to talk about the new trend on URL redirections and general practice and DotNetNuke Method.</p>
<p>If you start from a fresh DNN new Website, you have nothing much to concern on the old url from the past. If you somehow migrate your website from a non-DNN to DNN website, you&#8217;re pretty much in worst case scenario. To cut it short, the best url redirection is to use 301 soft redirection. So what is 301 Redirection has to do with DNN?</p>
</div>
<h2>301 Redirection</h2>
<p>How to do 301 Redirection without touching IIS? Simplest way is to use URL Master from ifinity. One thing that you should always remember to do is: <strong>COPY DOWN THE OLD URL OF THE PAGE/CONTENT BEFORE YOU DELETE IT! </strong>Most of the people deleted the page and forgot which url need to be redirected.</p>
<blockquote><p>If you need to change the URL of a page as it is shown in search engine results, we recommended that you use a server-side 301 redirect. <strong>This is the best way to ensure that users and search engines are directed to the correct page.</strong> The 301 status code means that a page has permanently moved to a new location. &#8212;From <a title="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=93633" href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=93633">http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=93633</a></p></blockquote>
<p>In ASP.NET There is no need touching the IIS to do 301 Redirection, so do in DotNetNuke.</p>
<p>To sum up, just do redirection whenever you delete or move the page location.</p>
<p><strong>*Remember NOT to Redirect all the pages into same page like home page. You will be penalized by Google and having this message: &#8220;Too many redirections to single URL.&#8221; in the Google Webmaster Tool, and yup! the page will be de-indexed.</strong></p>
<h2>404 Page Not Found</h2>
<p>So how to make a Custom Error Page for DotNetNuke? If you Google around, people will tell you do to IIS to do redirection. WTF? How am I going to do it in Shared Hosting then? The answer is, with Control Panal like Plesk, simply go to &#8220;IIS Setting&#8221; or &#8220;Custom Error Page&#8221; and type in the destination URL of your custom made error page and it is done! But that is stupid way.</p>
<p>By using the method above, all of your applications in the server will be redirected to the page! Since we only need to redirect 404 page in DotNetNuke right? Here comes the web.config file. To explain a bit further, DotNetNuke has it own Error Page in the root of DNN installation already which is ErrorPage.aspx. That file is actually trigger only when your DNN has configuration errors like failed to connect to database, module crashed or DNN installation failed. Most importantly, it has a ugly design that doesn&#8217;t match your website!</p>
<p>So, the easiest way <em>(I never thought it is that easy, those &#8216;experts&#8217; in DotNetNuke&#8217;s forum always goes too far for a simple solution)</em> is as above:</p>
<h2>How to make Custom 404 Error Page in DotNetNuke?</h2>
<p>1. Create a page in your DotNetNuke and choose a skin and container that matches your design. Yup! Just like how you create a normal page as always.</p>
<p>2. Access to your DNN root files via FTP. Find your Web.Config File, download it and open using notepad.</p>
<p>3. Find (Ctrl+F) this line: &lt;customErrors mode=&#8221;RemoteOnly&#8221; /&gt;<br />
and replace it with &#8221;<br />
&lt;customErrors mode=&#8221;RemoteOnly&#8221; defaultRedirect=&#8221;/Whatever-you-like.aspx&#8221; /&gt;</p>
<h5>The mode attribute can be one of the following:</h5>
<h5>* On – error details are not shown to anybody, even local users. If you specified a custom error page it will be always used.</h5>
<h5>* Off – everyone will see error details, both local and remote users. If you specified a custom error page it will NOT be used.</h5>
<h5>* RemoteOnly – local users will see detailed error pages with a stack trace and compilation details, while remote users with be presented with a concise page notifying them that an error occurred. If a custom error page is available, it will be shown to the remote users only.</h5>
<p>So, if you&#8217;ve already created a page called &#8220;/Whatever-you-like.aspx&#8221; in first step, then just put it inside &#8220;defaultRedirect&#8221;. And you may try to typed in wrong URL to visit your website, you should see this: http://www.example.com/Whatever-you-like.aspx<strong>?aspxerrorpath=/wrong.aspx<br />
</strong><br />
Remember that you can redirect the 404 Error Page to other website also, in this case, just type full url with http:// in inside the &#8220;defaultRedirect&#8221; attribute.</p>
<p>The best practice is to include your website navigation menu, sitemap and search box for the visitors that fall into this page so that they will not think that your website is broken or else. Therefore, try to match the DotNetNuke 404 Error Page same with your main design theme.</p>
<p>Furthermore, you can add Google Custom Error Widget (You can get your own custom code in Google Webmaster Tool) to show a search box which suggested links for visitors. Sadly, it seems that Internet Explorer is not supporting it if you&#8217;re using it in DotNetNuke. To be precise, the widget is still in beta and not quite ready for Dynamic websites.</p>
<p>One last thing, don&#8217;t forget to change the CustomError in web.config during DotNetNuke upgrade.</p>
<p>Hope this post solve your doubts and confusion in DotNetNuke Custom 404 Error Page. No need to change IIS setting! (Especially if you&#8217;re using Windows server 2008, most of the setting can be done within web.config)</p>


<p>Related posts:<ol><li><a href='http://www.mylifebbs.com/2009/05/making-dotnetnuke-logo-link-seo-friendly/' rel='bookmark' title='Permanent Link: Making DotNetNuke Logo Link SEO Friendly!'>Making DotNetNuke Logo Link SEO Friendly!</a></li>
<li><a href='http://www.mylifebbs.com/2009/03/how-to-modify-dotnetnuke-login-page-the-easy-way/' rel='bookmark' title='Permanent Link: How to modify DotNetNuke Login Page? The Easy Way.'>How to modify DotNetNuke Login Page? The Easy Way.</a></li>
<li><a href='http://www.mylifebbs.com/2009/10/best-free-javascript-and-css-compressor-to-optimized-your-website/' rel='bookmark' title='Permanent Link: Best Free JavaScript and CSS Compressor to Optimized your Website.'>Best Free JavaScript and CSS Compressor to Optimized your Website.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.mylifebbs.com/2009/01/dotnetnuke-custom-error-page-404-page-not-found-redirection/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
