Issue with Mura CMS, ColdFusion, ISAPI and IIS6

Awhile back I ran into an issue installing Mura CMS on a dedicated Windows server running, ColdFusion, ISAPI and IIS6. The issue wasn't blatantly obvious at first because Mura would install just fine and the home page would show up so I thought everything was just fine. However, once I began adding pages to the site and then attempted to view those pages, they wouldn't show up. I would get the ever popular 'The page cannot be found' screen. The first thing I did was check some other Mura sites I had already had installed on the server and each one of them had the same issue. This was extremely odd to me because all of my Mura sites had worked just fine before and I never noticed any problems.

So after tinkering around a little I began thinking about any software I had installed recently that might even remotely affect what was going on. Well, the only thing I could think of was ISAPI. I had just installed it with the previous day or so and wasn't really using ISAPI yet. So I uninstalled it, then checked my sites and they all seemed to work just fine. Well, that's great, isn't it? Sure, if you don't really use or need ISAPI, which was my case at the time so I just went about my business and never dug any further into the issue.

So, a few months went by and some developers who were in the process of evaluating Mura shot me a message asking for a little direction on a problem. "We have Mura up, but cannot go to sub pages. I think it is a SEO URL thing that IIS6 is not handling correctly ..." and they attached a couple of screen shots for me to look at. It took me a minute to remember, but I asked them if they had ISAPI installed. Sure enough, they did. So I proceeded to let them know if my recent experience, but wasn't able to help them really solve the problem ... because see, they actually used ISAPI and needed to have it play nicely with Mura.

A short time later, one of the developers had a "eureka!" moment. In hopes of guiding any other people running into this problem, I've opted to post his entire response below. Many thanks (and congrats) to Ken Payne for solving this problem!

Steve,

I just figured out our iis6/cf8 404 problem and I thought you might like to know what its was.

By default CF8 is not SES enabled.  I saw how to correct this early on in my investigation, by uncommenting the appropriate entries in the web.xml file.  This had no apparent effect and we assumed it wasn't even hitting CF anyway since it was a IIS 404 error.  So after your hint that it may be ISAPI we edited IIS and did a restart and voila the SES URL's now worked.  On 1 but not on the other 2 installs.  I hadn't restarted the other 2 cf instances after editing their web.xml... 

So after monkeying with restarting IIS and the other CF instances they magically worked at some point.  Enter the new developer with his own CF instance and we have the same problem.  It didn't take me long to puzzle it out by dumb luck on my first try.

So the correct sequence is:

  • Edit web.xml to enable ses
  • Restart the CF instance
  • Restart IIS
  • Done!

So simple once I see what's going on.   IIS was smart enough to know that CF didn't have a servlet for handle the ses url so it just didn't pass it.  This was not obvious since at one point it did indeed pass it on during my testing when I re-commented the ses servlet declarations and tried accessing with ses url.  But of course I had not restarted IIS yet so it thought CF could handle it etc.

Hope that made sense.

Comments
Steve, what does it mean for ColdFusion to be "SES" enabled? What does that do? I have not seen this before.
# Posted By Ben Nadel | 3/1/10 3:00 PM
@Ben,
In the web.xml file (usually found under '{Drive:}\JRun4\servers\cfusion\cfusion-ear\cfusion-war\WEB-INF\' in a multi-server install), there are some servlet-mappings specifically there to support Search Engine Safe (SES) URL types. Apparently, his were commented out for whatever reason.

Anyway, these 'SES' servlet-mappings are there to recognize URL patterns such as '*.cfm/*' or '*.cfc/*', etc.
# Posted By Stephen Withington | 3/2/10 12:13 PM
I should probably be a bit more clear about the URL patterns for someone else reading this. Mura (and many other content management systems out there) use a SES URL such as the URL address to this blog entry. Or, http://www.domain.com/index.cfm/dynamic/path/to/co...
# Posted By Stephen Withington | 3/2/10 12:26 PM
Ahh, ok. Yeah, that stuff uses the cgi.path_info. I was not even aware that was something you could turn on and off on a server. Good to know!
# Posted By Ben Nadel | 3/2/10 1:12 PM
I was having this exact problem and someone at Mura referred me to this article. It sounds exactly like what I have been experiencing. I went into web.xml to uncomment the the code to enable ses but it turns out that it was not commented out.

It then occurred to me that it must be the way ISAPI is configured. I opened IIS > Web Service Extensions and noticed that "all unknown isapi extensions" status is set to Prohibited. Is there a particular way that I should configure ISAPI or is it sufficient to simply change the status from Prohibited to Allow?

Thanks.

# Posted By Michael Wagenheim | 4/29/10 12:23 PM
@Michael,

I probably wouldn't change the Web Service Extensions to allow all unknown ISAPI extensions.

Just out of curiosity, I would try adding another mapping to your web.xml file (keep in mind that you would have to restart CF). Try adding something like this:

<servlet-mapping id="coldfusion_mapping_99">
<servlet-name>CfmServlet</servlet-name>
<url-pattern>/index.cfm/*</url-pattern>
</servlet-mapping>
# Posted By Steve Withington | 4/29/10 12:40 PM
Steve

Thanks for the tip. I tried that but I am still ending up with a 404 error message.

I also briefly tried setting the "Allow all unknown ISAPI extensions to "Allow" and that did not help. What do you recommend for ISAPI settings?

Thanks
# Posted By Michael Wagenheim | 4/29/10 2:19 PM
@Michael,

Did you try turning off ISAPI to see if ISAPI is really to blame? If you turn it off, you'll need to restart IIS as well.

If it is because of ISAPI, I could point you to some other resources, if it's not, we would want to dig a little deeper into your configuration.
# Posted By Steve Withington | 4/29/10 4:15 PM
@michael

Did you every figure out what the problem was?
# Posted By Matt Levine | 7/12/10 12:37 PM
Not yet, I had to put this project on the shelf for a bit. I am starting to pick it up again, so I will keep you posted.

Thanks
# Posted By Michael Wagenheim | 7/22/10 9:14 AM
Hi Michael, what happened with your Mura project. Did you ever get the SES URL's working?
# Posted By George Murphy | 1/19/11 12:22 PM
Stephen

I just installed Mura 5.5.x under the same hardware/software as you describe in this post with the exceptiont that I run CF9 with SES urls enabled by default as I can see in the web.xml file.

I have it installed also on my PC which runs IIS7 (Windows 7 Professional) instead of IIS6 (Windows 2003 Server on the production machine) and on the IIS7 it runs great on the production server it does not and we have ISAPI Rewrite 3.0 running as an IIS6 add on.

What did I overlook ? I followed the same steps as you did.
# Posted By Anthony | 6/13/11 3:49 PM
I am having this issue with the my mura site on showing the home page. child pages are not showing the content. the address changes but the content does not show.
# Posted By Red | 10/10/12 4:44 PM
im having the exact same issue as Red. the mura site after upgrading from 5.4 to 6 only shows home page and the child pages does not show the content. how can we resolve this?
please help?
# Posted By sirila29 | 9/23/13 4:17 PM
@sirila29,

What's your Mura and server environment setup?

Whenever I run into an issue like this, the first thing I do is go to the /config/settings.ini.cfm file and make turn on a few things:

siteidinurls=1
indexfileinurls=1

Reload the application, and see what happens. If it works, at this point, then I would try turning off the siteidinurls:

siteidinurls=0

Reload the application and see if it works. If it does, then you've pretty much narrowed things down to IIS and/or your rewrite rules. However, it's hard to point you in any specific direction until you share your server setup.

But first, go through the steps I've just listed.
# Posted By Steve Withington | 9/23/13 6:39 PM
thank you so much Steve. that was a helper. it rectified the issue i have. had to modify some of the redirect rules.
thank you for pointing me in the right direction and helping me out at the proper time.
# Posted By sirila29 | 9/24/13 11:19 AM
Thank you very much for posting this. I've just setup multiserver with CF8 and CF9 instance, configured Mura / IIS site for the CF8 instance and found a rather funny issue - only the homepage was processed by CF8 and the rest of the pages by CF9. Enabling SES in web.xml of the CF8 instance fixed that at once.
# Posted By ir | 1/8/14 7:08 PM

© 2014, Stephen J. Withington, Jr.  |  BlogCFC was created by Raymond Camden – Version 5.9.004

Creative Commons License  |  This work is licensed under a Creative Commons Attribution 3.0 Unported License.  |  Hosted by Hostek.com